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
cat [OPTION] [FILE]-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.
cat datei.txtDieser 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.
Hallo Welt
Dies ist eine Beispiel-Datei.cat beispiel.txtHallo 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.
cat datei1.txt datei2.txtDieser 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.
cat datei1.txt datei2.txt > neue_datei.txtIn 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.
cat -n datei.txtDies 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.
Zeile eins.
Zeile zwei.
Zeile drei.cat -n datei.txt1 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.
cat -E datei.txtAngenommen, die Datei datei.txt hat folgenden Inhalt.
Hallo Welt
Dies ist eine Beispiel-Datei.cat -E datei.txtHallo 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.
cat -v datei.txtAusgabe mit leeren Zeilen filtern
Mit der Option -s (oder --squeeze-blank) werden aufeinanderfolgende leere Zeilen in der Ausgabe auf eine einzige leere Zeile reduziert.
cat -s datei.txtAngenommen, die datei.txt enthält folgenden Inhalt. (Achtung, zwischen der Zeile 2 und Zeile 3 sind 2 Leerzeichen).
Zeile 1
Zeile 2
Zeile 3Das nächste Beispiel zeigt die Ausgabe bei Verwendung von -s Option.
cat -s datei.txtZeile 1
Zeile 2
Zeile 3Häufige Stolperfallen
cat in Pipes ist oft überflüssig (UUOC).
Ein häufiges Anti-Pattern ist cat datei.txt | grep Muster — grep (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
- cat(1) – Linux manual page (man7.org) — offizielle Dokumentation aller cat-Optionen
- GNU Coreutils Manual: cat invocation — ausführliche Beschreibung im GNU-Handbuch
- Arch Wiki: Core utilities — Übersicht über cat und verwandte Werkzeuge
Verwandte Artikel
- Linux Shell — Grundlagen der Kommandozeile
- cut – Spalten aus Text extrahieren — gezielte Textausschnitte mit cut
- echo – Text und Variablen ausgeben — einfache Textausgabe mit echo
- Manpages – Hilfe auf der Kommandozeile — so liest du eingebaute Dokumentation