给定两个文件:
generic/scripts/hello.sh
parent/scripts -> generic/scripts
从任何位置调用
parent/scripts/hello.sh
后,我想(在脚本中)找到父目录的完整路径。在这种情况下,parent
。主要问题是
parent/scripts/..
指的是unix中的generic
。另一方面,涉及正则表达式的所有内容都不通用,可能容易出错。无效的解决方案:
`dirname $0`/..
realpath `dirname $0`/..
readlink -f `dirname $0`/..
`cd *something*/..; pwd`
`perl ... abs_path(...)`
由于符号链接(symbolic link),所有这些都将指向
generic
而不是parent
。涉及正则表达式的所有内容均不可适应/泛型,可能会因为更复杂的路径而失败。路径中可能还有其他
..
和符号链接(symbolic link),您需要祖 parent ,这是涉及..
的目录名,您可以通过$ PATH进行调用...而且,即使通过
$PATH
调用它,我也希望它能在任何情况下都起作用。有什么简单的安全解决方案可以解决这个简单的问题?我的意思是毕竟这只是在获取父目录!
我使用的是:
dir=$( dirname $( cd `dirname $0` >/dev/null; pwd ) )
邓诺(Dunno),如果它是完美的,但似乎表现出预期。
最佳答案
试试这个:
basename $(dirname $(dirname $0))
也许只是
$(dirname $(dirname $0))
目前尚不清楚您是想单独使用
parent
还是使用完整路径。关于linux - bash脚本: how to find the absolute path of "symlink/.."?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6267753/