我有这个:
file_path="/actual/file/path"
read_link="$(readlink "$file_path")" # just in case it's a symlink
如果不是符号链接,readlink会回显一个空字符串?是否有读取链接的选项,如果不是符号链接,它只会回显原始路径?
对于GNU / Linux系统,-f
标记readlink
(--canonicalize
),“通过递归跟随给定名称的每个组件中的每个符号链接来规范化»将为您完成此操作:
touch /tmp/real
ln -s /tmp/real /tmp/link
readlink -f /tmp/real # → "/tmp/real"
readlink -f /tmp/link # → "/tmp/real"
对于Mac OSX系统,没有选项可以执行此操作,«如果给定的参数不是符号链接,readlink
将不打印任何内容并退出并显示错误»。
对于这两个系统,您都可以找到文档和readlink
with的所有可用选项man readlink
。
与OSX上的通用解决方案最接近的就是这种功能
readlinkorreal() { readlink "$1" || echo "$1"; }
readlinkorreal /tmp/real # → "/tmp/real"
readlinkorreal /tmp/link # → "/tmp/real"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句