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

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

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

e.g.

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

当前回答

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

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

其他回答

如果/home/smith/Desktop/Test/../是你想要的:

dirname 'path/to/child/dir'

如图所示。

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

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

如果出于某种原因,你想要浏览特定数量的目录,你也可以这样做:nth_path=$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && & cd ../../../ && pwd)。这将提供3个父目录

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

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

如果你只需要父目录的名称:

parent_dir_name=$(basename $(dirname $PWD))