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.
Zum Anzeigen von Textdateien stehen Ihnen unter Linux viele Programme zur Verfügung. Natürlich können Sie jederzeit einen Editor wie Vi oder Emacs oder einen Pager wie less oder more starten, um solche Files zu lesen. Es geht aber auch mit einfachen Tools wie cat, head und tail.
Multifunktional – cat
Das Programm cat verkettet (engl.: "to concatenate") nicht nur mehrere Dateien zu einer, es eignet sich auch dazu, einzelne Files auf der Standardausgabe anzuzeigen. Der einfache Aufruf cat datei.txt bringt den Inhalt der Datei auf den Bildschirm.
Manchmal ist es praktisch, eine Textdatei mit Zeilennummern zu versehen, um beispielsweise bei der Diskussion von Programmlistings auf eine bestimmte Zeile Bezug zu nehmen. Dafür bietet cat die Option -n und gibt damit zu Beginn jeder Zeile die Zeilennummer aus.
Vorsicht allerdings bei binären Formaten: gibt man aus Versehen eine Binärdatei mit cat aus, sind oft nur noch Sonderzeichen zu sehen und auch die Eingabe wird unleserlich (Abbildung 1). Abhilfe schafft hier das Programm reset: Tippen Sie (blind) reset am Prompt und drücken Sie [Return], um das Terminal zu reparieren. Falls auch das nicht hilft, probieren Sie es mit echo [Strg-v][Esc][c][Return].
Häufig wird cat dazu verwendet, Dateien durch eine Pipe an ein anderes Programm zu schicken. So lässt sich eine Liste mit cat ausgeben und direkt an das Kommando sort [1] weiterleiten:
$ cat liste.txt | sort Arnie 42 Egbert 120 Hubert 30 Petronella 100
Die Ausgabe von cat lässt sich mit den für Unix typischen Mitteln umlenken: mit dem Operator > schreiben Sie den Output in die neue datei2:
cat datei1 > datei2
Das funktioniert auch mit mehreren Dateien. Dazu führen Sie die Dateinamen einfach nacheinander auf:
cat datei1 datei2 > datei3
Existiert datei3 noch nicht, wird sie angelegt. Ist sie allerdings schon vorhanden, überschreibt cat sie einfach. Mit einem anderen Operator bringen Sie cat dazu, an vorhandene Dateien anzuhängen:
cat datei1 datei2 >> datei3
Leiten Sie die Ausgabe wie in diesen Beispielen in eine Datei um, verarbeitet cat auch problemlos Binärdateien. So ist es möglich, große Dateien mit split in kleinere Pakete zu zerlegen und sie danach mit cat wieder zusammenzufügen. Anwendungen hierfür sind der Transport von Daten mit Disketten oder das Verschicken über E-Mail.
Einige Newsgruppen wie comp.unix.shell vergeben seit Jahren regelmäßig den "Useless Use of Cat Award"[2]. Der Preis geht an denjenigen, der den unsinnigsten Gebrauch des Kommandos cat vorschlägt – Begründung: "Mit cat sollte man Dateien verketten. Es ist reine Zeitverschwendung, ein einziges File mit nichts zu verknüpfen, und kostet einen Prozess". Unter diesem Gesichtspunkt mögen manche LeserInnen das eine oder andere Beispiel auch als "useless" ansehen. Jedenfalls entspricht auch eine redundante Anwendung von cat dem Unix-Prinzip, kleine Programme mit Hilfe von Pipes zu verketten. Bei moderner Hardware dürften die "Kosten" für einen zusätzlichen Prozess leicht zu verschmerzen sein.
Aller Anfang ist head
Der Name ist Programm: Mit head (engl.: "Kopf") geben Sie die ersten Zeilen einer Datei am Bildschirm aus. Standardmäßig schreibt der Aufruf head datei.txt die ersten zehn Zeilen auf den Bildschirm. Die Option -n nummer verändert diese Vorgabe. Die Konfigurationsdateien im Verzeichnis /etc enthalten in den ersten Zeilen häufig den Namen und Verwendungszweck der Datei. Um von sämtlichen dort liegenden Files die ersten drei Zeilen auszugeben, verwenden Sie den Aufruf head -n 3 *.conf.
Praktisch: Lassen Sie head auf mehr als eine Datei los, fügt das Tool eine optische Trennung ein (Listing 1). Wer auf dieses Feature verzichten möchte, verwendet den Parameter -q (für --quiet).
Listing 1
mit mehreren Files gibt Trenner aus
huhn@asteroid:/etc$ head -n 3 *.conf ==> aatv.conf <== # aatv configuration file. # Video mode. Choose between PAL, SECAM and NTSC. ==> abcde.conf <== # System defaults for abcde. # Nothing in this file is uncommented by default. # ==> adduser.conf <== …



