myt*_*hic 7 shell bash symlink
我正在编写一个需要某些命令的规范路径的脚本。由于可能存在指向实际命令的符号链接,因此我readlink -f用来获取规范路径。但是我没有得到我真正想要的东西readlink -f,我将用下面的例子来解释:
假设我当前的目录是:/home/user/Documents
如果我尝试获取sleepwith的路径,readlink -f我会得到这个:
/home/user/Documents/sleep
Run Code Online (Sandbox Code Playgroud)
我真正想要的是 /bin/sleep
readlink -f "$(type -P sleep)"
Run Code Online (Sandbox Code Playgroud)
或者如果您注重绩效:
cpath="$(type -P sleep)"; [ ! -L "$cpath" ] || cpath="$(readlink -f "$cpath")"
Run Code Online (Sandbox Code Playgroud)
使用readlink -e(existing) 代替readlink -f可以避免这种操作不存在文件的事故。
第二个示例假设返回的路径type -P是规范的,这意味着它假设您的路径没有非规范组件。