我在用巴什Ubuntu 中的 shell 精確。
我偏向符號連結在巴什即使當一個硬連結會更有意義,因為它們可以更容易被識別為LS。相較之下,對於硬連結我必須直觀地比較索引節點數字。與輸出相比,這更麻煩LS在軟連結上,該連結顯示帶有「-->」的目標,並且可以應用不同的著色方案。有沒有辦法擁有LS在視覺上區分硬連結和「普通檔案」?例如,也許透過對引用計數大於 1 的不同檔案進行著色?
我知道這個問題的框架不正確,因為從概念上講,硬連結只是 inode 的另一個名稱,因此與「普通檔案」無法區分,而且符號連結中沒有目標的概念,但您得到了我的用例。
答案1
ls -l
輸出顯示權限和擁有者之間到檔案系統條目的硬連結數量:
$ mkdir foo
$ ls -ld foo
drwxr-xr-x 2 danielbeck staff 68 15 Aug 18:49 foo
預設情況下,它2
適用於空目錄,foo/.
並且foo
.每個子目錄都為其添加一個..
。除非您使用的是 OS X 並且頭腦清醒有問題,否則這是您將獲得的唯一目錄硬連結。
當然,文件僅顯示“真實”硬鏈接,因此除此之外的任何內容都1
表明某處存在硬鏈接:
$ touch bar
$ ln bar baz
$ ls -l bar baz
-rw-r--r-- 2 danielbeck staff 0 15 Aug 18:52 bar
-rw-r--r-- 2 danielbeck staff 0 15 Aug 18:52 baz
我的(BSD/OS X)ls
沒有與硬連結相關的選項,但是您可以編寫自己的 shell 函數,如下所示,它僅列印硬連結計數,否則ls -F1
(如果ls -l
太麻煩):
function lss {
OLDIFS="$IFS"
IFS=$'\n'
for line in $( ls -d1 $@ )
do stat -f '%N%T (%l)' "$line"
done
IFS="$OLDIFS"
}
兩個硬連結和一個不相關文件的輸出qux
:
$ lss bar baz qux
bar (2)
baz (2)
qux (1)