bash获取当前目录的父目录
如果我有这样的文件path
/home/smith/Desktop/Test /home/smith/Desktop/Test/ 我该如何改变string,以便得到父目录?
例如
 /home/smith/Desktop /home/smith/Desktop/ 
	
 dir=/home/smith/Desktop/Test parentdir="$(dirname "$dir")" 
如果还有斜线,也可以使用。
…但是“在这里看到”是什么被打破了。 这是修复:
 > 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' 
如这里所见。
显然,父目录是通过简单地追加点号文件名给出的:
 /home/smith/Desktop/Test/.. # unresolved path 
但是你必须要解决的path(一个没有任何点状path组件的绝对path):
 /home/smith/Desktop # resolved path 
 使用dirname的最佳答案的问题是,当您用点号inputpath时,它们不起作用: 
 $ dir=~/Library/../Desktop/../.. $ parentdir="$(dirname "$dir")" $ echo $parentdir /Users/username/Library/../Desktop/.. # not fully resolved 
这更强大 :
 dir=/home/smith/Desktop/Test parentdir=`eval "cd $dir;pwd;cd - > /dev/null"` 
 你可以喂它/home/smith/Desktop/Test ,但也更复杂的path,如: 
 $ dir=~/Library/../Desktop/../.. $ parentdir=`eval "cd $dir;pwd;cd - > /dev/null"` $ echo $parentdir /Users # the fully resolved path! 
 只要使用echo $(cd ../ && pwd)在你想要查找的目录的父目录中工作。 这个链条还有没有尾随斜线的附加好处。 
根据您是否需要绝对path,您可能需要采取额外步骤:
 child='/home/smith/Desktop/Test/' parent=$(dirname "$child") abs_parent=$(realpath "$parent") 
 使用这个: export MYVAR="$(dirname "$(dirname "$(dirname "$(dirname $PWD)")")")"如果你想要第四个父目录 
  export MYVAR="$(dirname "$(dirname "$(dirname $PWD)")")"如果你想要第三个父目录 
  export MYVAR="$(dirname "$(dirname $PWD)")"如果你想要第二个父目录