如果我有一个文件路径,例如…
/home/smith/Desktop/Test
/home/smith/Desktop/Test/
我如何改变字符串,使它将是父目录?
e.g.
/home/smith/Desktop
/home/smith/Desktop/
如果我有一个文件路径,例如…
/home/smith/Desktop/Test
/home/smith/Desktop/Test/
我如何改变字符串,使它将是父目录?
e.g.
/home/smith/Desktop
/home/smith/Desktop/
当前回答
使用这个:export MYVAR="$(dirname "$(dirname "$(dirname "$(dirname $PWD)")")")")")")"如果你想要第四个父目录
出口myvar# = " $(目录名“$(目录名(目录名$ PWD)美元)”)” 如果你想要第三个父目录
输出MYVAR="$(dirname $PWD)")" 如果你想要第二个父目录
其他回答
如果出于某种原因,你想要浏览特定数量的目录,你也可以这样做:nth_path=$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && & cd ../../../ && pwd)。这将提供3个父目录
...但“这里看到的”是坏的。下面是解决方案:
> pwd
/home/me
> x='Om Namah Shivaya'
> mkdir "$x" && cd "$x"
/home/me/Om Namah Shivaya
> parentdir="$(dirname "$(pwd)")"
> echo $parentdir
/home/me
如果你只需要父目录的名称:
parent_dir_name=$(basename $(dirname $PWD))
dir=/home/smith/Desktop/Test
parentdir="$(dirname "$dir")"
如果后面有斜杠,也可以。
根据你是否需要绝对路径,你可能需要额外的步骤:
child='/home/smith/Desktop/Test/'
parent=$(dirname "$child")
abs_parent=$(realpath "$parent")