Command-Line

僅查找符號連結的目的地

  • May 1, 2020

為了在 shell 腳本中使用,我正在尋找一種命令行方式來獲取符號連結的目的地。到目前為止,我最接近的是stat -N src,它輸出src -> dst. 當然我可以解析輸出並得到dst,但我想知道是否有一些直接的方式來獲取目的地。

如果可用,另一種選擇是使用專門設計的命令readlink

例如

$ readlink -f `command -v php`
/usr/bin/php7.1

在 Mac OS X 和 FreeBSD/NetBSD/等上。它的:

stat -f %Y <filename>

更一般地說,我想解決方案是(stat –printf=%N 使用奇怪的引號):

ls -l b | sed -e 's/.* -> //'

例子:

# ln -s a b
# stat -f %Y b
a

另一種方法是:

# find b -maxdepth 0 -printf %l
a#

最後一行被破壞了,因為它沒有換行符,但是如果您需要變數中的結果,那很好,就像這樣

# f=$(find b -maxdepth 0 -printf %l)
# echo $f
a

如果碰巧是一個目錄,-maxdepth則需要它來防止find下降到目錄中。b

引用自:https://unix.stackexchange.com/questions/47710