![](/img/trans.png)
[英]How to create a folder with a folder name containing spaces in linux?
[英]Getting name of containing Folder
我有一个要在许多目录中复制的Shell脚本
在此脚本中,如何初始化变量
PARENT_FOLDER
以一种方式在其中存储包含此脚本的文件夹的名称(而不是绝对路径)?
请注意,可以从任何文件夹运行此脚本。
提前致谢。
在大多数情况下,以下内容将获取脚本所在目录的绝对路径:
PARENT_FOLDER=$(dirname "$(readlink -f "$0")")
(OSX和BSD可能缺少-f
选项,没有该选项,路径可能仍包含符号链接。)
如果只需要路径中最终目录的名称,则只需添加一个步骤:
PARENT_FOLDER=$(dirname "$(readlink -f "$0")")
PARENT_FOLDER=${PARENT_FOLDER##*/}
在缺少readlink -f
但可以使用bash的系统上:
PARENT_FOLDER="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PARENT_FOLDER=${PARENT_FOLDER##*/}
如果同时缺少readlink -f
和bash:
PARENT_FOLDER="$( cd "$( dirname "$0" )" && pwd )"
PARENT_FOLDER=${PARENT_FOLDER##*/}
要获取当前目录的父文件夹,可以使用以下命令
PARENT_FOLDER=$(pwd | awk -F"/" 'OFS="/"{$NF=""}1')
更新
也下面的命令可以工作
从命令dirname Print NAME的手册页中删除其尾部/ component; 如果NAME不包含/,则输出'。 (表示当前目录)。
PARENT_FOLDER = $(目录名“ $ PWD”)或
PARENT_FOLDER=$(dirname "$0")
PARENT_FOLDER=$(pwd | awk -F / '{if ($NF!="") print $NF; else print "/"}')
在Mac和Linux上都对我有用的最佳解决方案是
PARENT_FOLDER="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PARENT_FOLDER=${PARENT_FOLDER##*/}
它是此链接中给出的答案的组合:
而@ John1024给出的答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.