cat (concatenate) verkettet Dateien und schreibt sie in die Standardausgabe
cat [-benstuvAET] [-number] [-number-nonblank] [-squeeze-blank] [-show-nonprinting] [-show-ends] [-show-tabs] [-show-all] [Datei ...]
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.
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.