Home / LinuxUser / 2001 / 12 / ls

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

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.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

3422 Hits
Wertung: 80 Punkte (4 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...