Wie unterscheiden `stat` und `file` symbolische Links?

Ich habe heute meine Routinearbeit erledigt und es scheint, dass die Befehle statund fileim Terminal nicht zeigen, ob eine Datei ein symbolischer Link ist:

flow2k@myPad:dir ln -s aa.iml superlink
flow2k@myPad:dir stat superlink
16777220 11057327 lrwxr-xr-x 1 flow2k staff 0 6 "Dec  2 13:25:34 2017" "Dec  2 13:25:34 2017" "Dec  2 13:25:34 2017" "Dec  2 13:25:34 2017" 4096 8 0 superlink

Wie kann ich sehen, ob etwas ein Symlink ist?

Welche Art von Ausgabe würden Sie erwarten, um zu zeigen, dass es sich um einen Symlink handelt?
@patrix Da ich etwas an Linux gewöhnt bin, habe ich erwartet, dass die Zeichenfolge „symbolischer Link“ explizit in der Ausgabe angezeigt wird, wie die hier gezeigten Beispiele unter unix.stackexchange.com/a/49326/227169
Na ja, macOS ist nicht Linux :-)

Antworten (2)

Das lin lrwxr-xr-xzeigt, dass es sich um einen (symbolischen) Link handelt.
Verwenden Sie readlink file, um anzuzeigen, wohin der symbolische Link zeigt.

Auf der statHandbuchseite heißt es:

Beim Aufruf als readlink wird nur das Ziel des symbolischen Links ausgegeben. Wenn das angegebene Argument kein symbolischer Link ist, gibt readlink nichts aus und wird mit einem Fehler beendet.

BSD statund fileunterscheiden sich von ihren Linux-Gegenstücken, aber die BSD-Versionen können die Linux-Ausgabe nachahmen. Aus dem Handbuch für file:

-h, --no-dereference
         option causes symlinks not to be followed (on systems that support symbolic links).

file -h /etc
/etc: symbolic link to private/etc

und aus dem Handbuch fürstat

 -x      Display information in a more verbose way as known from some Linux distributions.

stat -x /etc
File: "/etc"
Size: 11           FileType: Symbolic Link
Mode: (0755/lrwxr-xr-x)         Uid: (    0/    root)  Gid: (    0/   wheel)
Device: 1,4   Inode: 419701    Links: 1
Access: Sun Apr 16 14:39:45 2017
Modify: Sun Apr 16 14:39:45 2017
Change: Sun Apr 16 14:41:19 2017