加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – bash脚本:如何找到“symlink / ..”的绝对路径?

发布时间:2020-12-14 02:20:54 所属栏目:Linux 来源:网络整理
导读:鉴于两个文件: generic/scripts/hello.shparent/scripts - generic/scripts 从任何位置调用parent / scripts / hello.sh后,我希望(在脚本中)找到父目录的完整路径.在这种情况下父母. 主要问题是parent / scripts / ..在unix中引用泛型.另一方面,涉及正则表
鉴于两个文件:
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))

目前还不清楚你是否想要父母单独或完整的道路.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读