cat

Funktion

cat (concatenate) verkettet Dateien und schreibt sie in die Standardausgabe

Syntax

cat [-benstuvAET] [-number] [-number-nonblank] [-squeeze-blank] [-show-nonprinting] [-show-ends] [-show-tabs] [-show-all] [Datei ...]

Beschreibung

cat liest beliebige Dateien und schreibt sie ohne Veränderung in die Standardausgabe. Durch Umlenkung der Ausgabe auf eine Datei können so Dateien verkettet werden. Außerdem wird cat häufig benutzt, um Dateien an Programme zu übergeben, die nur von der Standardeingabe lesen. (Solche Programme werden im allgemeinen als Filter bezeichnet.) Für die Übergabe steht entweder die Ausgabeumlenkung der Shell mit `>' und `>>' zur Verfügung, oder die Ausgabe wird durch eine Pipline an den Filter weitergeleitet.

Optionen

-b
alle nicht leeren Zeilen erhalten eine Zeilennummer
-e
das gleiche wie -vE
-n
sämtliche Zeilen werden numeriert
-s
mehrere leere Zeilen in Folge werden zu einer einzigen leeren Zeile zusammengefaßt
-t
das gleiche wie -vT
-u
ohne Funktion
-v
alle Kontrollzeichen außer TAB und NEWLINE werden angezeigt
-A
das gleiche wie -vET
-E
gibt ein `$' Zeichen am Ende jeder Zeile aus
-T
die TAB werden als ^I angezeigt

Beispiele

Mit dem cat-Kommando können Dateien ausgedruckt werden. Mit dem Kommando  

$ cat Adressenliste > /dev/lp1
$ _

können Sie die Datei Adressenliste direkt der Gerätedatei /dev/lp1 zuführen, die den ersten parallelen Druckerport im System darstellt. Diese Methode ist aber sehr unelegant. Sie umgeht und blockiert den Druckerspooler lpd, der über die reine  Auslieferung hinaus noch die Formatierung der Dokumente erledigen kann. Wenn ein Druckerdämon installiert ist, sollten Sie die ,,direkte`` Methode nur in Ausnahmefällen benutzen.

Wenn Sie zwei Dateien durch Umlenkung der Ausgabe von cat verketten wollen, müssen Sie den Standardausgabekanal immer in eine dritte Datei zielen lassen.

$ cat foo bar > foo
cat: foo: input file is output file
$ _

führt NICHT zum erwünschten Ergebnis. Die Datei `foo' wird von der Shell vor der Ausführung von cat gelöscht, um die Ausgabe des Kommandos dorthin umzulenken. cat erkennt noch, daß eine Eingabedatei mit der Ausgabedatei übereinstimmt, Ihre Daten sind aber bereits verloren.

Ein verwandtes Problem kann beim Anhängen von Daten an eine bestehende Datei entstehen. Der Befehl

$ cat foo bar >> foo
cat: foo: input file is output file
$ _

würde zu einem ,,Kurzschluß`` führen, weil der schreibende Dateizeiger immer dem lesenden eine Dateilänge vorauseilen würde. Nicht unbedingt das gewünschte Ergebnis. cat erkennt diesen Fehler und verweigert die Ausführung. Die Datei foo bleibt also unverändert erhalten.