Was bedeuten die von ls -F angezeigten Symbole?

61

Mir ist aufgefallen, dass, wenn ich ls -F für ein Verzeichnis ausführe, einige Einträge mit einem * oder einem @ nach ihnen versehen sind.

spuder@ubuntu:~$ ls -F /sbin
acpi_available*   getpcaps*           lvmconf*                 ntfscp*        start-stop-daemon*
agetty*           getty*              lvmdiskscan@             ntfslabel*     status@
alsa*             halt@               lvmdump*                 ntfsresize*    stop@
alsactl*          hdparm*             lvmsadc@    

spuder@ubuntu:~$ ls -F ~
daq-0.6.1/  examples.desktop       noname-cache.lib  snort-2.9.1/   Templates/
Desktop/    jpgraph-1.27.1/        noname.sch        snortfiles/    Ubuntu One/
Documents/  

Nach den Manpages von ls

spuder@ubuntu:~$ man ls
...
-F, --classify
  append indicator (one of */=>@|) to entries
...

Ich vermute, das @bedeutet symbolische Verknüpfung,

Was bedeuten diese anderen Indikatoren ( */=>@|)?

Spuder
quelle
2
Haben Sie daran gedacht, die Manpage zu lesen?
mdpc
23
Er hat. Tatsächlich hat er einen Auszug aus der Manpage gepostet. Die vollständige lsDokumentation einschließlich der Informationen zu den von angezeigten Symbolen ls -Fbefindet sich in einem Texinfo-Handbuch. ( info ls).
1
Auf einer Seite beachten, da in der Regel Texinfo Handbücher seltsam und fremd fühlen, ist es üblich , Funktionen wie diese herum zu halten: infos () { info --vi-keys --subnodes -o - "$@" | less; }.
1
@EvanTeitelman Das sind großartige Informationen, die ich info foo --vi-keysim Hinterkopf behalten werde . Leider funktioniert die von Ihnen angegebene Syntax bei mir nicht (infos () {info --vi-keys ...}
spuder
1
@spuder: Es ist eine Funktion; du musst es nennen. infos ls. Der $@Teil übergibt alle Argumente der Funktion an info. Sie können diese Funktion ~/.bashrczur späteren Verwendung in Ihre Datei aufnehmen.

Antworten:

67

ls -Ffügt den Dateinamen Symbole hinzu. Diese Symbole zeigen nützliche Informationen zu Dateien an.

Wenn Sie dieses Verhalten wollen der Standard sein, fügen Sie diese zu Ihrer Shell - Konfiguration: alias ls='ls -F'.

Gemeinschaft
quelle
10
Realias Befehle nicht, es kann schlecht geschriebene Skripte brechen. Ich habe Alias lfür -F und Farbe und llfür -l
ctrl-alt-delor
Auf Android bekomme ich eine komplett zweispaltige Ausgabe. Ich erhalte den Dateinamen oder den Verzeichnisnamen und VOR dem Namen gibt es ein Minus, wenn es sich um eine Datei handelt, oder ein "d", wenn es sich um ein Verzeichnis handelt, oder ein "ld", wenn es sich um einen Link handelt. Es ist eine Katastrophe, dass Linuxe so inkonsistent sind!
Elmue
1

Nur um hinzuzufügen, wie ich diese Info gefunden habe. Wie unten angegeben man ls:

Vollständige Dokumentation unter: https://www.gnu.org/software/coreutils/ls oder lokal verfügbar unter: info '(coreutils) ls invocation'

Im Anschluss daran sehen wir

'-F' '--classify' '--indicator-style = classify' Füge an jeden Dateinamen ein Zeichen an, das den Dateityp angibt. Fügen Sie außerdem für reguläre Dateien, die ausführbar sind, '*' hinzu. Die Dateitypindikatoren sind '/' für Verzeichnisse, '@' für symbolische Links, '|' für FIFOs '=' für Sockets '>' für Türen und nichts für reguläre Dateien. Folgen Sie nicht den in der Befehlszeile aufgeführten symbolischen Links, es sei denn, die Optionen --dereference-command-line (-H), --dereference (-L) oder --dereference-command-line-symlink-to-dir sind angegeben.

auf https://www.gnu.org/software/coreutils/manual/coreutils.html#ls-invocation

flow2k
quelle