ls (Unix)
ls
ist ein durch POSIX und die Single UNIX Specification definierter Befehl auf der Kommandozeile, der in Unix- und unixoiden-Systemen implementiert ist, um den Inhalt eines Verzeichnisses anzeigen zu lassen. ls
ist eines der am häufigsten benutzen Unix-Kommandos. ls
steht für „list“.
Geschichte
Ein ls
-Dienstprogramm erschien in der ursprünglichen Version von AT&T UNIX. Der Name leitet sich vom ähnlichen Befehl list
bzw. ls
in Multics ab.
Heute gibt es verschiedene Versionen von ls
. Unter anderem gibt es die Version von OpenSolaris, der Free Software Foundation als Teil der GNU Coreutils und die der BSD-Varianten, wie FreeBSD, OpenBSD, NetBSD und Apples Darwin. Alle genannten sind freie Software und Open Source.
Grundfunktion
Unix und unixoide Betriebssysteme kennen das Konzept des Arbeitsverzeichnisses, was nichts anderes bedeutet als die aktuelle eigene Position in der Hierarchie der ineinander verschachtelten Verzeichnisse. Ruft man nun ls
ohne Parameter auf, zeigt es den Inhalt des Arbeitsverzeichnisses an. Gibt man zusätzlich beliebige Dateien und/oder Verzeichnisse ohne weitere Parameter an, werden all diese Dateien und die Inhalte dieser Ordner aufgelistet werden. Zumeist werden dabei lediglich die Dateinamen ohne weitere Details (mehrspaltig) aufgelistet. Das konkrete Verhalten ist voreingestellt und variiert in einzelnen Systemen. Ein Administrator kann die Vorgabe systemweit ändern, einfache Benutzer nur für sich selbst.
Um weitere Details in den aufgelisteten Einträgen der Liste ausgeben zu lassen, können Optionen genutzt werden. Eine Auswahl an Optionen:
-l
verwendet ein langes Listenformat; zeigt die Unix-Dateiart (ob reguläre Datei [-], Verzeichnis [d], symbolischen Verknüpfung [l], benannte Pipe [p], Block-orientierte [b] oder Zeichen-orientierte [c] Gerätedatei), Dateiname und Anzahl harter Links, Dateirechte, Eigentümer (Benutzerkonto), Benutzergruppe, Datenmenge („Größe“, „Gewicht“) und Änderungsdatum;-F
hängt ein Zeichen an den Dateinamen an, um diese zu charakterisieren; beispielsweise * für ein Programm und / für ein Verzeichnis. An reguläre Dateien wird kein Zeichen angehängt;-R
zeigt rekursiv auch den Inhalt von Unterordnern mit an;-a
ignorieren keine Datei; andernfalls werden Dateien deren Name mit ».« (Punkt) beginnt ignoriert (versteckte Dateien);-d
zeigt Angaben über ein Verzeichnis selbst anstelle dessen Inhalt, auch bei einer symbolischen Verknüpfung auf ein Verzeichnis;-t
sortiert die Liste nach dem Datum.
Das Dateiformat kann dieses Programm nicht ausgeben, siehe file.
Farbige Ausgabe
In einigen Systemen kann eine farbliche Ausgabe mithilfe einer Option aktiviert werden:
--color
bei der GNU-Implementierung; zum Bestimmen der Farbe wird die Unix-Dateiart, die -Dateirechte und die Dateinamenserweiterung berücksichtigt.-G
bei FreeBSD und macOS; hier wird die Dateinamenserweiterung nicht berücksichtigt.
Auf vielen Systemen muss die Option für Farbhervorhebung nicht angeben, weil sie mit einem Aliases in der Konfiguration der Kommandozeile bereits automatisch vorausgewählt ist.
Weitere Beispiele für beliebte Aliase sind ll
für ls -l
und l
für ls
, um Tipparbeit bei diesen häufig genutzten Befehlsvarianten zu sparen.
In Kombination mit der Option -l
wird oft die Option -h
angegeben, um die Dateigrößen human readable anzuzeigen – damit ist gemeint, dass die Dateigrößen gerundet und mit SI-Präfix angezeigt werden, also beispielsweise 4,2M anstelle von 4351902.
Aufrufbeispiel
$ ls -l drwxr--r-- 1 fred editors 4096 drafts -rw-r--r-- 1 fred editors 30405 edition-32 -r-xr-xr-x 1 fred fred 8460 edit
Die Ausgabe (stdout) enthält folgende Informationen: Benutzerrechte, Anzahl der harten Links, Besitzer, Gruppe, Größe der Datei in Byte, Dateiname.
Alle Dateiinformationen sind in Inodes hinterlegt. Um diese anzuzeigen, wird der Parameter -i benötigt. Dabei wird der Unterschied zwischen Hardlinks und Softlinks deutlich.
Weblinks
ls(1)
– Open Group Base Specificationls(1)
– OpenBSD General Commands Manualls(1)
– Debian GNU/Linux Ausführbare Programme oder Shell-Befehle Handbuchseite