
Der Linux cat-Befehl ist eines dieser Tools, die du jeden Tag verwendest, ohne darüber nachzudenken. Dann wird dir eines Tages klar, dass du nur 20 % dessen weißt, was er tut. Hier sind die anderen 80 %.
Was ist der Linux cat-Befehl?
cat steht für „concatenate“ (verketten). Sein ursprünglicher Zweck bestand darin, Dateien zusammenzufügen, aber es hat sich zum Standardbefehl für die schnelle Anzeige von Dateiinhalten entwickelt. Es liest eine oder mehrere Dateien und schreibt sie in die Standardausgabe, die du im Terminal anzeigen oder anderswo umleiten kannst.
Wo cat in die tägliche Linux-Arbeit passt
Du greifst auf cat zurück, wenn du schnell eine Konfigurationsdatei lesen, einen Protokollausschnitt überprüfen oder die korrekte Schreibweise einer Datei verifizieren musst. Für längere Dateien sind die Befehle less oder more besser geeignet. cat ist für kurze Dateien gedacht, in denen man alles auf einmal ohne Seitenumbruch anzeigen möchte.
cat-Befehlssyntax
cat [OPTIONS] [FILENAME...]Ohne Dateinamen liest cat von der Standardeingabe, bis du Strg+D drückst. Bei einem oder mehreren Dateinamen werden diese der Reihe nach gelesen und ausgedruckt.
Verwendung des cat-Befehls
Dateiinhalt anzeigen
Der häufigste Anwendungsfall:
cat /etc/hostnamecat /var/log/syslogBei mehreren Dateien zeigt cat sie nacheinander in der angegebenen Reihenfolge an.
Mehrere Dateien verketten
Dafür wurde cat eigentlich entwickelt. Dateien zu einer zusammenfassen:
cat file1.txt file2.txt > combined.txtDas > leitet die kombinierte Ausgabe in eine neue Datei um. Ohne es wird der kombinierte Inhalt im Terminal ausgegeben.
Zeilennummern mit -n hinzufügen
Das Flag -n nummeriert jede Ausgabezeile, was nützlich ist, wenn auf bestimmte Zeilen in Konfigurationsdateien oder Skripten verwiesen wird:
cat -n /etc/nginx/nginx.confDas Flag -b nummeriert nur nicht-leere Zeilen, wenn du das Zählen leerer Zeilen überspringen möchtest.
Unterdrücke Leerzeilen mit -s
Das Flag -s fasst mehrere aufeinanderfolgende Leerzeilen in eine einzige Leerzeile zusammen. Nützlich bei ausführlichen Konfigurationsdateien oder Protokollausgaben mit zahlreichen Leerzeilen:
cat -s verbose_config.txtNicht druckbare Zeichen mit -A anzeigen
Das Flag -A zeigt Tabs als ^I und Zeilenenden als $-Zeichen an. Das ist besonders hilfreich beim Debuggen von im Windows-Format gespeicherten Dateien, die auf einen Linux-Server hochgeladen wurden, da versteckte Carriage-Return-Zeichen (^M) Skripte stören können.
cat -A script.shWenn du am Ende jeder Zeile ^M siehst, weist die Datei Windows-Zeilenenden auf. Behebe es mit dos2unix.
Dateien mit cat erstellen und anhängen
Eine neue Datei erstellen
Verwende cat mit Umleitung und einem heredoc, um eine Datei interaktiv zu erstellen:
cat > newfile.txtGib deinen Inhalt ein und drücke dann Strg+D zum Speichern und Beenden. Die Datei wird mit deiner Eingabe erstellt.
An eine vorhandene Datei anhängen
Verwende >> statt > zum Anhängen, ohne zu überschreiben:
cat >> existing.txtGib neuen Inhalt ein und drücke zum Beenden Strg+D. Das wird ans Ende der Datei angehängt.
cat mit Pipes und Umleitungen
cat funktioniert gut als Beginn einer Pipeline, wenn du eine Datei in einen anderen Befehl einspeisen möchtest:
cat access.log | grep "404" | wc -lAllerdings akzeptieren viele Befehle Dateinamen direkt (grep „404“ access.log), wodurch cat überflüssig wird. Es ist eher eine Geschmacksfrage für die Lesbarkeit statt zur Effizienz.
Wann man cat NICHT verwenden sollte: häufige Fehlanwendungen
Der ’nutzlose Einsatz von cat‘ ist in Linux-Skripting-Kreisen Realität. Durch die Weiterleitung von cat an Befehle, die Dateien direkt lesen können, wird ein sinnloser Prozesszweig hinzugefügt:
- cat file.txt | grep pattern → verwende grep pattern file.txt stattdessen
- cat file.txt | head -20 → verwende head -20 file.txt stattdessen
- cat file.txt | wc -l → verwende wc -l file.txt stattdessen
Das ist nicht falsch, verursacht aber unnötigen Overhead. Bei großen Dateien oder in engen Schleifen summiert sich das.
FAQ: Linux cat-Befehl
cat liest eine oder mehrere Dateien und schreibt deren Inhalt in die Standardausgabe. Du kannst Dateien im Terminal anzeigen, mehrere Dateien verketten oder die Ausgabe in neue Dateien umleiten.
Verwende cat -n dateiname. Dies nummeriert jede Zeile in der Ausgabe. Verwende stattdessen -b, um nur nicht-leere Zeilen zu nummerieren.
Führe aus: cat file1.txt file2.txt > combined.txt. Das kombiniert beide Dateien in combined.txt in der angegebenen Reihenfolge.
cat gibt die gesamte Datei auf einmal aus. less und more teilen die Ausgabe in Seiten auf, sodass du darin scrollen kannst. Verwende cat für kurze Dateien, less für lange.