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 -l
Die 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 2
standardmäßig für leere Verzeichnisse foo/.
und foo
der 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 1
weist 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) ls
hat 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 -l
es 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)