Der cat-Befehl (kurz für “concatenate”) ist eines der grundlegendsten und am häufigsten verwendeten Werkzeuge in der Unix- und Linux-Welt. Dieser Befehl dient hauptsächlich dazu, den Inhalt von Dateien anzuzeigen, zu kombinieren und in anderen Dateien zu speichern. Obwohl cat ein einfaches Tool ist, gibt es viele Aspekte und Einsatzmöglichkeiten, die man verstehen sollte, um es effektiv nutzen zu können.

Syntax

Bash
cat [OPTION] [FILE]
Parameter
-A, --show-all

Zeigt alle nicht druckbaren Zeichen, $ am Zeilenende, und Tabs als ^I.

-b, --number-nonblank

Nummeriert nur nicht-leere Zeilen, überschreibt -n.

-e

Entspricht -vE, zeigt Steuerzeichen an und $ am Zeilenende.

-E, --show-ends

Zeigt $ am Ende jeder Zeile.

-n, --number

Nummeriert alle Zeilen.

-s, --squeeze-blank

Unterdrückt aufeinanderfolgende Leerzeilen.

-t

Zeigt nicht druckbare Zeichen und Tabs als ^I.

-T, --show-tabs

Zeigt Tabs als ^I.

-u

Wird ignoriert (hat keine Funktion)

-v, --show-nonprinting

Zeigt nicht druckbare Zeichen, außer Zeilenumbrüche und Tabs.

--help

Zeigt Hilfe an und beendet.

--version

Zeigt Versionsinformationen an und beendet.

Operationen

Anzeige des Inhalts einer Datei

Die einfachste Anwendung von cat ist das Anzeigen des Inhalts einer Datei im Terminal.

Bash
cat datei.txt

Dieser Befehl zeigt den gesamten Inhalt der Datei datei.txt in der Standardausgabe (normalerweise das Terminal) an.

Angenommen, die Datei beispiel.txt enthält folgenden Text.

Bash beispiel.txt
Hallo Welt
Dies ist eine Beispiel-Datei.
Bash Beispiel
cat beispiel.txt
Output
Hallo Welt
Dies ist eine Beispiel-Datei.

Mehrere Dateien kombinieren

Eine der Hauptfunktionen von cat ist das Kombinieren mehrerer Dateien zu einer einzigen Ausgabe. Dies ist besonders nützlich, wenn man den Inhalt mehrerer Dateien zusammenfügen möchte.

Bash
cat datei1.txt datei2.txt

Dieser Befehl zeigt den Inhalt von datei1.txt gefolgt von datei2.txt an.

Um das Ergebnis in einer neuen Datei zu speichern, kann man die Ausgabe umleiten.

Bash
cat datei1.txt datei2.txt > neue_datei.txt

In diesem Fall wird der kombinierte Inhalt in neue_datei.txt gespeichert.

Zeilen nummerieren

Mit der Option -n können die Zeilen in der Ausgabe nummeriert werden.

Bash
cat -n datei.txt

Dies ist ziemlich nützlich, wenn man auf bestimmte Zeilen in einer großen Datei verweisen möchte.

Angenommen, eine Datei beispiel.txt enthält folgenden Text.

Bash beispiel.txt
Zeile eins.
Zeile zwei.
Zeile drei.
Bash Beispiel
cat -n datei.txt
Output
1	Zeile eins.
2	Zeile zwei.
3	Zeile drei.

End-of-Line Zeichen

Mit der Option -E werden die End-of-Line-Zeichen (also die Zeilenumbrüche) als $ dargestellt. Das ist nützlich, um ungewollte Leerzeichen oder Zeilenumbrüche zu erkennen.

Bash
cat -E datei.txt

Angenommen, die Datei datei.txt hat folgenden Inhalt.

Bash datei.txt
Hallo Welt
Dies ist eine Beispiel-Datei.
Bash Beispiel
cat -E datei.txt
Output
Hallo Welt$
Dies ist eine Beispiel-Datei.$

Unlesbare Zeichen

Die Option -v (oder --show-nonprinting) zeigt alle nicht druckbaren Zeichen an, mit Ausnahme von Tabs und Zeilenumbrüchen.

Bash
cat -v datei.txt

Ausgabe mit leeren Zeilen filtern

Mit der Option -s (oder --squeeze-blank) werden aufeinanderfolgende leere Zeilen in der Ausgabe auf eine einzige leere Zeile reduziert.

Bash
cat -s datei.txt

Angenommen, die datei.txt enthält folgenden Inhalt. (Achtung, zwischen der Zeile 2 und Zeile 3 sind 2 Leerzeichen).

Bash datei.txt
Zeile 1
Zeile 2

Zeile 3

Das nächste Beispiel zeigt die Ausgabe bei Verwendung von -s Option.

Bash Beispiel
cat -s datei.txt
Output
Zeile 1
Zeile 2

Zeile 3

Häufige Stolperfallen

cat in Pipes ist oft überflüssig (UUOC).

Ein häufiges Anti-Pattern ist cat datei.txt | grep Mustergrep (und die meisten anderen Kommandos) können die Datei direkt lesen: grep Muster datei.txt. Das zusaetzliche cat startet einen unnotigen Prozess und verlangsamt die Verarbeitung, besonders bei großen Datenmengen. Nur wenn du mehrere Dateien zusammenführen und dann durch eine Pipe schicken willst (cat *.log | grep Fehler), ist cat tatsaechlich nötig.

cat datei > datei zerstört den Inhalt der Datei.

Die Shell oeffnet die Zieldatei mit > zum Schreiben, bevor cat sie lesen kann. Das Ergebnis: Die Datei ist sofort leer und cat liest eine leere Datei — der urspruengliche Inhalt ist unwiederbringlich verloren. Verwende zum Bearbeiten Editoren wie vim oder nano, und für programmatische Änderungen Werkzeuge wie sed -i (mit Sicherungskopie: sed -i.bak).

cat mit Binärdateien zerstört die Terminal-Anzeige.

Wenn du versehentlich eine Binärdatei (etwa cat /bin/ls) ausgibst, wird dein Terminal mit Steuerzeichen überschwemmt. Zufaellige Bytefolgen können als Terminal-Steuersequenzen interpretiert werden und die Anzeige unbrauchbar machen. Abhilfe schafft reset — das setzt den Terminal-Zustand zurück. Besser vorher prüfen: file unbekannte.datei zeigt dir den Dateityp an, bevor du cat darauf loslaesst.

cat -v und cat -A zeigen unterschiedliche Informationen.

cat -v zeigt nicht druckbare Zeichen an, laesst aber Tabs und Zeilenenden unmarkiert. cat -A ist umfassender: Es kombiniert -vET — es markiert Zeilenenden mit $, Tabs mit ^I und zeigt alle anderen Steuerzeichen. Wenn du wissen willst, warum ein Skript oder eine Config-Datei seltsam reagiert, ist cat -A fast immer die bessere Wahl, weil es saemtliche versteckten Zeichen auf einmal sichtbar macht.

Weiterführende Ressourcen

Externe Quellen

/ Weiter

Zurück zu Textverarbeitung

Zur Übersicht