Sicherlich hat jeder Linux-Anwender, der schonmal ein Kommandozeilenfenster gestartet hat, bereits den ls-Befehl genutzt, um Verzeichnisinhalte anzuzeigen. Die gängigen Distributionen sind so vorkonfiguriert, dass verschiedene Farben die Ausgabe übersichtlicher gestalten (Abbildung 1).
Die Auswahl der vordefinierten Farben muss aber nicht optimal sein. Beispielsweise kommt es auf die Hintergrundfarbe des Fensters an; dunkelblaue Verzeichnisnamen auf schwarzem Hintergrund sind schwer lesbar, wie Abbildung 1 zeigt. Den individuellen Geschmack oder beispielsweise eine Rot-Grün-Blindheit kann kein Distributor vorhersehen.
Kasten 1:
lsversus
dir
Einige Distributionen bieten ihren Nutzern, mit dem Augenmerk auf Windows-Umsteiger, die von DOS bekannten Befehle auch unter Linux an. Ein Beispiel hierfür ist der dir-Befehl, der unter DOS und der Kommandozeileneingabe von Windows Verzeichnisinhalte ausgibt. Typischerweise sind derartige Kommandos unter Linux als Alias realisiert: Unter Suse 9 beispielsweise führt die Eingabe von dir in der Kommandozeile lediglich den Befehl ls -l aus.
Ein Griff in den Malkasten
Die Farben, in denen ls die verschiedenen Dateitypen und Verzeichnisse darstellt, definiert die Umgebungsvariable LS_COLORS. In der Bash-Shell, die die meisten Distributionen als Standard verwenden, liest man diese mit dem Befehl echo $LS_COLORS aus. Unter Suse beispielsweise sieht das Ergebnis so aus:
LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=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 .jar=01;31 .jpg=01;35 .jpeg=01;35 .gif=01;35 .bmp=01;35 .pbm=01;35 .pgm=01;35 .ppm=01;35 .tga=01;35 .xbm=01;35 .xpm=01;35 .tif=01;35 .tiff=01;35 .png=01;35 .mpg=01;35 .mpeg=01;35 .avi=01;35 .fli=01;35 .gl=01;35 .dl=01;35 .xcf=01;35 .xwd=01;35 .ogg=01;35 .mp3=01;35 .wav=01;35:'
Der Befehl dircolors vereinfacht den Umgang mit den vielen einzelnen Werten dieser Variable. Ohne Parameter aufgerufen gibt dircolors zwei Zeilen aus: in der ersten den aktuellen Inhalt von LS_COLORS und in der zweiten den Befehl export LS_COLORS, der dafür sorgt, dass die Variable für alle zukünftig in der Shell gestarteten Programme gilt. Der Aufruf dircolors -p gibt eine erklärende Liste der einzelnen Werte aus; Listing 1 zeigt einen Auszug.
Listing 1
Ausgabe von
dircolors -pTERM linux #… TERM Eterm NORMAL 00 # Standardeinstellung FILE 00 # Standardeinstellung für Dateien DIR 01;34 # Standardeinstellung für Verzeichnisse LINK 01;36 # Symbolische Links #… ORPHAN 40;31;01 # verwaiste symbolische Links #… EXEC 01;32 # Ausführbare Dateien .tar 01;31 # Dateien mit der Endung .tar .jpg 01;35 […]
Ganz oben erscheint eine Liste der zu unterstützenden Terminal-Typen. Dann folgen die Farbgebungen für die einzelnen Dateitypen, zuerst die allgemeinen Fälle: NORMAL behandelt alle Typen, die nicht anderweitig definiert sind. Darunter folgt der Eintrag FILE, der die anzuzeigende Farbe gewöhnlicher Dateien bestimmt.
DIR und LINK sind für Verzeichnisse und symbolische Links zu anderen Dateien oder Verzeichnissen zuständig, dann folgen die Einträge für spezielle Dateitypen wie die Gerätedateien im Verzeichnis /dev. Der Eintrag ORPHAN beschreibt Links, die auf nicht existierende Dateien verweisen. Anschließend folgt eine Liste gewöhnlicher Dateien mit bestimmten Endungen, für jedes beliebige Suffix lässt sich eine eigene Farbe festlegen.
Malen mit Zahlen
Hinter jedem Eintrag stehen mindestens eine und bis zu drei Zahlen, die Schriftfarbe- und art – z. B. fett – sowie die Hintergrundfarbe bestimmen. Im Eintrag DIR 01;34 beispielsweise sorgt der Wert 01 für eine fette Darstellung, die 34 ergibt eine blaue Schriftfarbe.
Der Eintrag ORPHAN 40;31;01 stellt drei Werte ein, neben der Fettschrift mit 01 und der Farbe rot (31) erzwingt der Eintrag 40 einen schwarzen Hintergrund (Abbildung 2). Die Reihenfolge der verwendeten Werte spielt keine Rolle: Die Werte zwischen 00 und 08 definieren immer die Schriftart, 30 bis 37 die Vordergrundfarbe und 40 bis 47 den Hintergrund. Fehlt eine Angabe, verwendet ls den Standard. Tabelle 1 zeigt die einzelnen Schlüssel.
Tabelle 1: Bedeutung der Werte bei dircolors
| Schriftart | Schrift-/Hintergrundfarbe |
| 00: Keine Veränderung | 30/40: Schwarz |
| 01: Fett | 31/41: Rot |
| 04: Unterstrichen | 32/42: Grün |
| 05: Blinkend | 33/43: Gelb |
| 07: Vertauscht Vorder- und Hintergrundfarbe | 34/44: Blau |
| 08: Verborgen (funktioniert nicht bei allen Terminals) | 35/45: Magenta |
| 36/46: Cyan | |
| 37/47: Weiß |
Beim Eintrag LINK gibt es einen zusätzlichen Spezialfall: Wollen Sie Links keine eigene Farbe zuordnen, sondern sie wie ihr Ziel darstellen lassen, gibt es für diesen Eintrag die Sonderoption target. Anstelle der Zahlenwerte tragen Sie ein:
LINK target
Damit unterscheidet ein Aufruf von ls farblich nicht mehr zwischen einem Verzeichnis und einem Link auf ein Verzeichnis.
Um die Liste mit Hilfe von dircolors zu bearbeiten, exportieren Sie die eingestellten Werte in eine eigene Datei:
dircolors -p > meine_farben.txt
In meine_farben.txt ändern Sie nun mit einem beliebigen Texteditor die Werte nach Bedarf. Der Befehl dircolors meine_farben.txt liest anschließend die Werte aus dieser Datei aus und gibt die Zeilen aus, durch deren Ausführung die Variable LS_COLORS entsprechend gesetzt würde. Damit die Änderungen wirksam werden, führt der Befehl eval die ausgegeben Kommandos direkt aus:
eval `dircolors meine_farben.txt`



