bash :: optische Unterscheidung von Hardlinks auf ls

bash :: optische Unterscheidung von Hardlinks auf ls

ich benutzeSchlagShell in Ubuntu präzise.

Ich bin parteiisch gegenübersymbolische LinksInSchlagselbst wenn einFester Linkwäre sinnvoller, da sie leichter mit einem identifiziert werden könnenls. Im Gegensatz dazuHardlinksIch muss visuell vergleichen dieInodeZahlen. Dies ist umständlicher als die Ausgabe vonlsauf einem Softlink, der das Ziel mit "-->" anzeigt und ein anderes Farbschema haben kann. Gibt es eine Möglichkeit,lsHardlinks optisch von „normalen Dateien“ unterscheiden? Z.B. vielleicht durch eine andere Einfärbung von Dateien mit einem Referenzzähler über 1?

Ich verstehe, dass die Frage nicht richtig formuliert ist, da ein Hardlink konzeptionell nur ein anderer Name für den Inode ist und daher nicht von einer „normalen Datei“ zu unterscheiden ist und dass es kein Konzept eines Ziels wie bei symbolischen Links gibt, aber Sie verstehen meinen Anwendungsfall.

Antwort1

ls -lDie Ausgabe zeigt die Anzahl der Hardlinks zu einem Dateisystem-Eintrag zwischen Berechtigungen und Besitzer:

$ mkdir foo
$ ls -ld foo
drwxr-xr-x  2 danielbeck  staff  68 15 Aug 18:49 foo

Dies ist 2standardmäßig für leere Verzeichnisse foo/.und fooder Fall. Jedes Unterverzeichnis fügt einen für seinen hinzu ... Sofern Sie nicht mit OS X arbeiten und Ihr geistiger Verstand fragwürdig ist, sind dies die einzigen Verzeichnis-Hardlinks, die Sie erhalten.

In Dateien werden natürlich nur „echte“ Hardlinks angezeigt. Alles andere 1weist also darauf hin, dass irgendwo ein Hardlink vorhanden ist:

$ 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

Mein (BSD/OS X) lshat keine Optionen im Zusammenhang mit Hardlinks, aber Sie können Ihre eigene Shell-Funktion wie die folgende schreiben, die nur die Anzahl der Hardlinks ausgibt und andernfalls ls -F1(wenn ls -les zu umständlich ist) Folgendes ausgibt:

function lss {
    OLDIFS="$IFS"
    IFS=$'\n'
    for line in $( ls -d1 $@ )
        do stat -f '%N%T (%l)' "$line"
    done
    IFS="$OLDIFS"
}

Ausgabe für die beiden Hardlinks und eine unabhängige Datei qux:

$ lss bar baz qux
bar (2)
baz (2)
qux (1)

verwandte Informationen