bash :: 視覺上區分 ls 上的硬鏈接

bash :: 視覺上區分 ls 上的硬鏈接

我在用巴什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)

相關內容