鉴于两个文件:
generic/scripts/hello.sh parent/scripts -> generic/scripts
从任何位置调用parent / scripts / hello.sh后,我希望(在脚本中)找到父目录的完整路径.在这种情况下父母.
主要问题是parent / scripts / ..在unix中引用泛型.另一方面,涉及正则表达式的所有内容都不是通用的,可能容易出错.
解决方案不起作用:
`dirname $0`/.. realpath `dirname $0`/.. readlink -f `dirname $0`/.. `cd *something*/..; pwd` `perl ... abs_path(...)`
由于符号链接,所有这些都将指向泛型而非父级.
涉及正则表达式的所有内容都不具有适应性/通用性,对于更复杂的路径可能会失败.路径中可能还有其他..和符号链接,你想要祖父,它是一个涉及..的目录名,你通过$PATH调用它…
而且,我希望它能在任何情况下工作,即使它是通过$PATH调用的.
这个简单问题的任何简单安全解决方案?我的意思是它毕竟只是获取父目录!
我用过的:
dir=$( dirname $( cd `dirname $0` >/dev/null; pwd ) )
Dunno如果它是完美的但似乎表现得像预期的那样.
解决方法
试试这个:
basename $(dirname $(dirname $0))
或者只是
$(dirname $(dirname $0))
目前还不清楚你是否想要父母单独或完整的道路.