Hauptmenü öffnen

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“.

GeschichteBearbeiten

Ein ls-Dienstprogramm erschien in der ursprünglichen Version von AT&T UNIX. Der Name leitet sich von einem ähnlichen Befehl 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.

FunktionBearbeiten

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.

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.
brw-r--r--    1 unixguy staff 64,  64 Jan 27 05:52 block         
crw-r--r--    1 unixguy staff 64, 255 Jan 26 13:57 character     
-rw-r--r--    1 unixguy staff     290 Jan 26 14:08 compressed.gz 
-rw-r--r--    1 unixguy staff  331836 Jan 26 14:06 data.ppm      
drwxrwx--x    2 unixguy staff      48 Jan 26 11:28 directory     
-rwxrwx--x    1 unixguy staff      29 Jan 26 14:03 executable    
prw-r--r--    1 unixguy staff       0 Jan 26 11:50 fifo          
lrwxrwxrwx    1 unixguy staff       3 Jan 26 11:44 link -> dir   
-rw-rw----    1 unixguy staff     217 Jan 26 14:08 regularfile

Auf vielen Systemen muss man jedoch die Option für Farbhervorhebung nicht gesondert angeben, da diese zumeist mittels eines 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.

AufrufbeispielBearbeiten

$ 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.

SonstigesBearbeiten

ls ist ebenfalls ein Kommando im FTP. Hierbei wird jedoch nicht das ls-Kommandozeilenprogramm aufgerufen, sondern eine Funktion im FTP-Client, welche ein LIST- oder NLST-Kommando an den FTP-Server schickt, um eine Verzeichnisliste vom Server anzufordern. Siehe dazu das Unix-Kommando ftp.

WeblinksBearbeiten