screenie.png

Mit List und Tücke

ls

01.12.2001
Lassen Sie sich Ihre Dateien doch mal auf der Kommandozeile auflisten! Mit ls behalten Sie dabei den Überblick.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Kaum eine Manpage ist so lang und stellt soviele Optionen vor wie die zum unscheinbaren Kommando ls. Tatsächlich lohnt sich ein Blick darauf, denn diesen Befehl brauchen Sie immer wieder.

Der einfache Aufruf ls zeigt eine Liste (daher der Name) aller Dateien und Verzeichnisse an. Ohne zusätzliche Parameter und Optionen erhalten Sie eine mehrspaltige Ausgabe, in der alle Dateien, Linksund Verzeichnisse alphabetisch sortiert erscheinen.

Aus Gründen der Übersichtlichkeit werden Konfigurationsdateien, deren Namen mit einem Punkt beginnen (z. B. .bashrc oder .vimrc), bei einem normalen Listing nicht mit angezeigt. Schließlich braucht man sie bei der täglichen Arbeit nur sehr selten. Um solche "versteckten" Files mit aufzulisten, gibt es einige Parameter, die sich auch mit anderen kombinieren lassen. So zeigt Ihnen die Option -a (kurz für --all) auch die Dateien, die mit einem . beginnen.

Wenn es Sie stört, dass Sie bei einer solchen Auflistung das aktuelle und das übergeordnete Verzeichnis (gekennzeichnet durch . bzw. ..) mit angezeigt bekommen, hilft ls -A, was für ls --almost-all steht. Jetzt tauchen beide nicht mehr auf; versteckte Dateien werden aber weiterhin angezeigt.

Ausführlich gelistet

Noch mehr Informationen bietet ls -l:

huhn@asteroid:~$ ls -l
 total 16
 lrwxrwxrwx 1 huhn users    9 Oct 2 16:13 link -> script.sh
 lrwxrwxrwx 1 huhn users   17 Oct 9 14:33 link2 -> /home/huhn/.vimrc
 -rw——- 1 huhn users 2939 Oct 9 14:30 ls.html
 -rwxr-xr-x 1 huhn users    0 Oct 2 16:11 script.sh
 drwxr-xr-x 2 huhn users 4096 Oct 2 16:11 verzeichnis

Die Spalte ganz rechts enthält den Dateinamen, davor stehen Datum und Uhrzeit der letzten Veränderung (bzw. eine Jahreszahl, wenn die letzte Änderung länger zurückliegt). Weiterhin erfahren Sie von rechts nach links die Dateigröße in Bytes, die Gruppe und den Besitzer. Die Spalte davor, also die zweite von links, enthält eine Zahl, die bei Verzeichnissen die Anzahl der Verzeichniseinträge in eben diesem (inklusive . und ..), bei Dateien die Anzahl der Hardlinks verrät. Die zehn Zeichen am Zeilenanfang legen den Dateityp und die Zugriffsrechte offen. Das erste Zeichen steht für den Dateityp: - für eine normale Datei, d für ein Verzeichnis, l für symbolische Links, b oder c für Device-Dateien (block oder character). Beim symbolischen Link sehen Sie zusätzlich ganz rechts einen Pfeil auf die Ursprungsdatei.

ln /home/huhn/datei /tmp/datei2

wobei /home und /tmp in verschiedenen Dateisystemen liegen), erhält man die Fehlermeldung "Invalid cross-device link".

Wenn Sie Ihre Dateien lieber der Größe nach sortiert sehen möchten, verwenden Sie ls -S; die Größe in Bytes setzt ls -s vor den Dateinamen. Eine Kombination der beiden Befehle erzwingt dann folgende Ausgabe:

huhn@asteroid:~$ ls -sS
 total 16
    8 script.sh     4 verzeichnis     4 ls.html     0 link2     0 link

In Verzeichnissen mit vielen Unterverzeichnissen ist die ls-Option -d sehr hilfreich. Damit wird nur noch der Name des Verzeichnisses angezeigt, nicht mehr sämtliche darin enthaltene Dateien. Wenn Sie zum Beispiel die Zugriffsrechte des aktuellen Verzeichnisses (hier wieder durch den Punkt . abgekürzt) überprüfen möchten, benutzen Sie das Kommando

huhn@asteroid:~$ ls -ld .
 drwxr-xr-x 3 huhn users 4096 Oct 9 17:17 .

Ohne den Zusatz -d würde ls beim Anzeigen eines Verzeichnisses rekursiv in dieses hineinwechseln und auch dessen Inhalte anzeigen.

Mit ls -t sortieren Sie nach Datum und Uhrzeit der letzten Änderung. Die "jüngste" Datei steht dabei an erster Stelle. Soll die älteste zuerst auftauchen, drehen Sie die Ausgabe mit dem Parameter -r um. Dateitypen wie die schon erwähnten Symlinks, ausführbare Dateien oder Unterverzeichnisse kann die Option -F anzeigen. Hinter symbolischen Links taucht ein @ auf, hinter ausführbaren Dateien ein * und hinter Verzeichnissen ein /. Wer noch mehr Übersicht wünscht, bringt Farbe in die Kommandozeile.

Bitte in bunt!

Was grafisch orientierte Dateimanager, wie z. B. der Konqueror, mit unterschiedlichen Icons und Symbolen bunt präsentieren, kann ls mit ein paar verknüpften Optionen auf der Kommandozeile auch. Der Parameter ls --color verwendet für die Anzeige verschiedener Dateitypen Farben. Als Zusatz zu Ihrem ls-Befehl können Sie --color=always, --color=none oder --color=auto angeben. Im Gegensatz zu always (immer) oder none (nie), zeigt --color=auto nur bei der direkten Ausgabe in ein Terminal Farben an. Bei einer Weiterleitung des Outputs in einen Pager wie less oder more ist eine Farbanzeige nicht sinnvoll: Das Programm more kann die farblichen Hervorhebungen zwar interpretieren; less hingegen schreibt die Farb-Steuercodes aus, statt sie umzusetzen:

huhn@asteroid:~$ ls --color=always | less
 ESC[01;32mscript.shESC[0m

Bei einigen Distributionen wird die Option --color=auto durch einen Alias in der Datei /etc/profile oder durch Setzen der Umgebungsvariablen LS_OPTIONS zur Voreinstellung:

huhn@asteroid:~$ echo $LS_OPTIONS
 -N --color=tty -T 0

Der hier gesetzte Parameter --color=tty ist gleichbedeutend mit --color=auto. Die voreingestellten Farben (grün für ausführbare Dateien, hellblau für Symlinks, dunkelblau für Verzeichnisse) lassen sich in Terminals mit weißem Hintergrund jedoch oft schlecht lesen. Hier schafft das Tool dircolors Abhilfe. Schauen Sie sich zunächst mit dircolors -p (für --print-database) an, wie die Farben definiert werden:

huhn@asteroid:~$ dircolors -p | less[…]
 # Attribute codes:
 # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
 # Text color codes:
 # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
 # Background color codes:
 # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
 NORMAL 00       # global default, although everything should be something.
 FILE 00         # normal file
 DIR 01;34       # directory
 LINK 01;36      # symbolic link.  (If you set this to 'target' instead of a
                 # numerical value, the color is as for the file pointed
                 # to.)[…]

Da der Output viele Zeilen umfasst, leiten Sie die Informationen direkt in einen Pager um. In obigem Ausschnitt sehen Sie die Steuercodes für die Farben. Direkt darunter steht für Verzeichnisse der Eintrag DIR 01;34 – aufgeschlüsselt ergibt das 01 für bold (fett) und durch ein Semikolon getrennt 34 für die Farbe blue. Um eine Farbe an Ihren Geschmack anzupassen, lassen Sie sich mit dem Befehl dircolors -b zunächst den Code für die Variable LS_COLORS anzeigen:

huhn@asteroid:~$ dircolors -b
 LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32 .tar=01;31 .tgz=01;31 .arj=01;31 .taz=01;31 .lzh=01;31 .zip=01;31 .z=01;31 .Z=01;31 .gz=01;31 .bz2=01;31 .deb=01;31 .rpm=01;31 .jpg=01;35 .png=01;35 .gif=01;35 .bmp=01;35 .ppm=01;35 .tga=01;35 .xbm=01;35 .xpm=01;35 .tif=01;35 .png=01;35 .mpg=01;35 .avi=01;35 .fli=01;35 .gl=01;35 .dl=01;35:'

Markieren Sie den ganzen kryptischen Output mit der Maus, und editieren Sie anschließend die Datei .bashrc in Ihrem Home-Verzeichnis. Dort fügen Sie das Markierte mit der mittleren Maustaste ein und setzen noch ein export davor:

#.bashrc
 export LS_COLORS='no=00:fi=00:di=01;34:ln=01:pi=40;33:so=01;35:[…]

In dieser Variablenzuweisung sehen Sie an vierter Stelle den Eintrag ln=01, der für symbolische Links festlegt, dass sie fett gedruckt angezeigt werden. Um einen Symlink rot einzufärben, setzen Sie durch ein Semikolon getrennt eine 31 dahinter: ln=01;31. Speichern Sie, und lesen Sie die neue .bashrc mit dem Kommando source ~/.bashrc in der aktuellen Shell ein. Ein ls --color sollte die Symlinks jetzt in leuchtend roter Farbe anzeigen.

Selbst damit sind die Möglichkeiten von ls noch nicht ausgereizt. Experimentieren Sie mit weiteren, in der Manpage beschriebenen Optionen – es gibt viel zu entdecken. Tippfaule machen sich oft gebrauchte ls-Befehle übrigens unter Kurznamen (Aliasen) zugänglich: So enthält meine .bashrc die Einträge

alias ls='ls -CF --color=auto'
 alias ll='ls -laF --color=auto'

Wenn ich jetzt ll aufrufe, wird tatsächlich das Kommando ls -laF --color=auto ausgeführt. Das erspart jede Menge Tipparbeit – ein bisschen faul sind wir schließlich alle.

Glossar

Links

Ein Verweis auf eine andere Datei, der von Anwendungsprogrammen wie eben diese Datei behandelt wird.

symbolische Links

Wenn die Datei, auf die ein Symlink verweist, gelöscht wird, zeigt der Link ins Leere. Symlinks sind das Ergebnis des Kommandos ln -s.

Hardlink

Jeder Dateiname, der einer physikalischen Datei zugeordnet ist, wird als Hardlink auf diese bezeichnet. Innerhalb eines Linux/Unix-Dateisystems kann man also beliebig viele Namen auf dieselbe Datei zeigen lassen. Hardlinks über die Grenzen von Dateisystemen sind nicht möglich. Versucht man dennoch, einen anzulegen (etwa mit

Device-Dateien

(Gerätedatei) Unter Unix werden alle Gerätetreiber als Dateien repräsentiert, die typischerweise unter /dev liegen. Auf "character devices" (zeichenorientierte Geräte, z. B. die Konsole /dev/tty0) wird zeichenweise zugegriffen. "Block devices" werden blockweise beschrieben und gelesen, z. B. die erste IDE-Festplatte /dev/hda.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Farbige Ausgabe von ls mit dircolors
    Der Befehl ls sorgt für einen Überblick über Verzeichnisinhalte, eine farbenfrohe Ausgabe ist dabei für viele Anwender bereits selbstverständlich. Dieser Artikel beschreibt, wie Sie die Farbwahl von ls steuern.
  • Verzeichnisinhalt en detail mit "ls"
    Das Kommando "ls" listet Ihre Daten auf der Kommandozeile auf und verrät dabei auch allerhand über die Dateieigenschaften. Ob mit oder ohne Farbe – mit diesem Befehl behalten Sie den Überblick über Ihre Daten.
  • Bequem eingerichtet
    Mit Umgebungsvariablen richten Sie sich die Kommandozeile individuell und gemütlich ein.
  • Zu Befehl: pwd, cd, pushd, popd und dirs
    Die Wege im Verzeichnisdschungel sind unergründlich. Wie Sie auf dem rechten Pfad bleiben und welche Kommandos bei der Navigation helfen, zeigt diese "Zu Befehl"-Folge.
  • cp und mv
    In dieser "Zu Befehl"-Folge zeigen wir Ihnen, wie Sie Dateien an andere Stellen kopieren oder verschieben. Bei genauem Hinsehen geschehen manchmal recht ungewöhnliche Dinge: Was passiert, wenn man einen symbolischen Link kopiert? Wie bleiben möglichst viele Eigenschaften einer Datei beim Kopieren erhalten? Und wie kopiert man Unterverzeichnisse?
Kommentare

Infos zur Publikation

title_2014_09

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...