Linux
在 Linux 和 MacOS 上讀取連結的選項,如果它不是符號連結,它將返回文件路徑
我有這個:
file_path="/actual/file/path" read_link="$(readlink "$file_path")" # just in case it's a symlink
如果它不是符號連結,readlink 將回顯一個空字元串?如果它不是符號連結,是否有一個 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"