如果我有一个文件路径,例如…

/home/smith/Desktop/Test
/home/smith/Desktop/Test/

我如何改变字符串,使它将是父目录?

e.g.

/home/smith/Desktop
/home/smith/Desktop/

当前回答

dir=/home/smith/Desktop/Test
parentdir="$(dirname "$dir")"

如果后面有斜杠,也可以。

其他回答

根据你是否需要绝对路径,你可能需要额外的步骤:

child='/home/smith/Desktop/Test/'
parent=$(dirname "$child")
abs_parent=$(realpath "$parent")

...但“这里看到的”是坏的。下面是解决方案:

> pwd
/home/me
> x='Om Namah Shivaya'
> mkdir "$x" && cd "$x"
/home/me/Om Namah Shivaya
> parentdir="$(dirname "$(pwd)")"
> echo $parentdir
/home/me
dir=/home/smith/Desktop/Test
parentdir="$(dirname "$dir")"

如果后面有斜杠,也可以。

使用这个:export MYVAR="$(dirname "$(dirname "$(dirname "$(dirname $PWD)")")")")")")"如果你想要第四个父目录

出口myvar# = " $(目录名“$(目录名(目录名$ PWD)美元)”)” 如果你想要第三个父目录

输出MYVAR="$(dirname $PWD)")" 如果你想要第二个父目录

只需使用echo $(cd ../ && pwd),同时在您想要查找的父目录中工作。这个链还有一个额外的好处,就是没有后面的斜杠。