Der Linux-Cat-Befehl ist einer der am häu­figs­ten genutzten Linux-Befehle. Er wird meist dazu verwendet, den Inhalt einer Datei auf der Kom­man­do­zei­le aus­zu­ge­ben. Es gibt jedoch eine Reihe weiterer Ein­satz­zwe­cke, die wir in diesem Artikel be­spre­chen.

Was ist der Linux-Cat-Befehl?

Trotz des Namens hat der Linux-Cat-Befehl nichts mit Katzen zu tun. In der Tat macht der Befehl etwas ganz Profanes: Der Linux-Cat-Befehl liest Inhalte von Dateien und gibt diese auf der Kom­man­do­zei­le aus. Der Ursprung des Namens stammt vom Begriff „Kon­ka­te­nie­ren“ – mehr dazu weiter unten.

Schauen wir uns das grund­le­gen­de Muster eines Aufrufs des Linux-Cat-Befehls an. Wie Sie sehen, schreiben wir zunächst 'cat', ggf. gefolgt von Optionen, und an­schlie­ßend den oder die Namen bzw. Pfade der aus­zu­ge­ben­den Datei(en):

cat [Optionen] <dateiname(n)>

Der Linux-Cat-Befehl ist Teil der „GNU Core Utilities“ (Coreutils). Dabei handelt es sich um eine Sammlung grund­le­gen­der Kom­man­do­zei­len-Befehle. Die Coreutils sind „Free and Open Source Software“ (FOSS) und in so gut wie allen Linux-Dis­tri­bu­tio­nen vorhanden. Ferner steht der Linux-Cat-Befehl unter macOS sowie unter Windows bei Einsatz des „Windows Subsystem for Linux“ (WSL/WSL2) zur Verfügung.

Tipp

Um fest­zu­stel­len, ob der Linux-Cat-Befehl auf Ihrem System verfügbar ist, gehen Sie wie folgt vor: Öffnen Sie eine Kom­man­do­zei­le und führen Sie dort den Befehl 'which cat' aus. Ist der Linux-Cat-Befehl auf Ihrem System vorhanden, wird Ihnen der Pfad der cat-Bi­när­da­tei (z. B. '/bin/cat') angezeigt. Sollte eine Feh­ler­mel­dung angezeigt werden, ist der Linux-Cat-Befehl auf Ihrem System nicht verfügbar.

Optionen des Linux-Cat-Befehls

Wie die meisten Linux-Kom­man­do­zei­len-Befehle wird der Cat-Befehl beim Aufruf über optionale Parameter gesteuert. Diese Optionen folgen dem Namen des Befehls. Dabei ist zu beachten, dass zwischen Groß- und Klein­schrei­bung un­ter­schie­den wird. Für ge­wöhn­lich gibt es für die meisten Optionen zwei Schreib­wei­sen:

  1. Kurzform: -, z. B. 'cmd -h'

Die Kurzform ist wenig aus­sa­ge­kräf­tig. Dafür lassen sich mehrere Optionen zu einer kom­bi­nie­ren, z. B. 'ls -la' anstatt 'ls -l -a'. Gut geeignet ist die Kurzform für das schnelle Arbeiten mit bekannten Befehlen auf der Kom­man­do­zei­le.

  1. Langform: --, z. B. 'cmd --help'

Die Langform ist leicht ver­ständ­lich, benötigt jedoch mehr Zeit zu tippen und nimmt mehr Platz ein. Gut geeignet ist die Langform für das Erstellen von Skripten. Die aus­sa­ge­kräf­ti­gen Options-Namen dienen der Do­ku­men­ta­ti­on.

Schauen wir uns die wich­tigs­ten Optionen des Linux-Cat-Befehls an:

Option Erklärung
-h, --help Hilfe des Linux-Cat-Befehls anzeigen
-n Zeilen der Ausgabe num­me­rie­ren
-s mehrere Leer­zei­len zu einer zu­sam­men­fas­sen
-b alle Zeilen der Ausgabe bis auf Leer­zei­len num­me­rie­ren
-v un­sicht­ba­re Zeichen ausgeben
-e wie -v, inklusive Zeilenend-Marker
-t wie -v, inklusive Tab-Marker
-et Kom­bi­na­ti­on von -e und -t; alle un­sicht­ba­ren Zeichen ausgeben

Was bedeutet ei­gent­lich Kon­ka­te­nie­ren?

Der Name des Linux-Cat-Befehls stammt von „Kon­ka­te­nie­ren“, sei­ner­seits ab­ge­lei­tet vom la­tei­ni­schen Begriff „catena“ für Kette. Das Kon­ka­te­nie­ren ist ein wichtiges Konzept in der In­for­ma­tik. Der Begriff be­schreibt das Verketten, An­ein­an­der­rei­hen oder Zu­sam­men­fü­gen von Elementen gleich­ar­ti­ger Container-Da­ten­struk­tu­ren. Ins­be­son­de­re lassen sich in den meisten Sprachen mehrere Arrays oder Strings zu einem Array oder String zu­sam­men­fas­sen. Dabei werden die einzelnen Elemente der kon­ka­te­nier­ten Container unter Bei­be­hal­tung der Rei­hen­fol­ge in einem neuen Container zu­sam­men­ge­fasst.

Ein simples Beispiel in Pseu­do­code – wir übergeben der cat-Funktion mehrere Strings, die zu einem einzigen String kom­bi­niert werden:

cat("Peter ", "und ", "Paul") -> "Peter und Paul"

Der Linux-Cat-Befehl macht kon­zep­tu­ell dasselbe: Als Elemente ver­ar­bei­tet er innerhalb von Dateien grup­pier­te Zeilen.

Un­ter­schied­li­che Pro­gram­mier­spra­chen nutzen ver­schie­de­ne Symbole für den String-Kon­ka­te­nie­rungs-Operator. Schauen wir uns ein paar Beispiele beliebter Pro­gram­mier­spra­chen an. In allen Fällen ist das Ergebnis der Kon­ka­te­na­ti­on der String "Peter und Paul":

Operator Sprache(n) Beispiel
+ Java, Ja­va­Script, Python "Peter " + "und" + " Paul"
. PHP, Perl "Peter " . "und" . " Paul"
.. Lua "Peter " .. "und" .. " Paul"
~ Twig "Peter " ~ "und" ~ " Paul"
& Vi­su­al­Ba­sic "Peter " & "und" & " Paul"

Bei manchen Sprachen, ins­be­son­de­re Python, kommt derselbe Operator für die Kon­ka­te­nie­rung anderer Container-Da­ten­struk­tu­ren wie Listen zum Einsatz:

# Listen konkatenieren
[1, 2, 3] + [45, 56, 67]
# -> [1, 2, 3, 45, 56, 67]
# wohlgemerkt NICHT:
# [[1, 2, 3], [45, 56, 67]]
# Tupel konkatenieren
(1, 2) + (33, 44)
# -> (1, 2, 33, 44)

In­ter­es­sant ist die Statistik-Sprache „R“ – sie kennt keinen Kon­ka­te­nie­rungs-Operator. Statt­des­sen kommt die Funktion 'c()' zum Einsatz. Dreimal dürfen Sie raten, wofür das „c“ steht – richtig: „con­ca­te­na­te“. Hier dar­ge­stellt die ver­schach­tel­te Kon­ka­te­nie­rung mehrerer Werte:

c(c(1, 2, 3), c(45, 56, 67))
# -> 1, 2, 3, 45, 56, 67

Wie wird der Linux-Cat-Befehl in der Praxis ein­ge­setzt?

Der ei­gent­li­che Nutzen des Linux-Cat-Befehls ist limitiert. Dies folgt der UNIX-Phi­lo­so­phie „do one thing, and do it well“. Die meisten Ein­satz­sze­na­ri­en ergeben sich aus dem Verketten des Befehls mit anderen Befehlen. Dabei kommen Um­lei­tun­gen der Standard-Ein- und -Ausgabe zum Einsatz. Spe­zi­fisch handelt es sich um so­ge­nann­te Pipes und Redirects. Diese werden von der Shell be­reit­ge­stellt; ihr Einsatz erstreckt sich über alle Befehle hinweg:

Umleitung Symbol Einsatz Erklärung
Pipe | cmd1 | cmd2 Ausgabe des Befehls cmd1 an Eingabe des Befehls cmd2 wei­ter­lei­ten
Input-Redirect < cmd < data Eingabe an Befehl cmd aus Datei data lesen
Output-Redirect > cmd > data Ausgabe des Befehls cmd in Datei data schreiben; ggf. exis­tie­ren­de Datei wird über­schrie­ben
Output-Redirect >> cmd >> data Ausgabe des Befehls cmd in Datei data schreiben; ggf. exis­tie­ren­de Datei wird erweitert

Der Linux-Cat-Befehl wird häufig mit einer Reihe weiterer Linux-Befehle ein­ge­setzt. Schauen wir uns einige der ge­bräuch­lichs­ten an:

Linux-Befehl Erklärung
split eine Datei in Stücke spalten; Operation lässt sich mit cat umdrehen
uniq mehr als einmal auf­tre­ten­de Zeilen der Eingabe entfernen
sort Zeilen der Eingabe al­pha­nu­me­risch sortieren
head, tail Ausgabe auf Zeilen am Anfang/Ende begrenzen

Gehen wir nun über zu üblichen Ein­satz­sze­na­ri­en des Linux-Cat-Befehls.

Mit dem Linux-Cat-Befehl Dateien auf der Kom­man­do­zei­le ausgeben

Der wohl häufigste Einsatz des Linux-Cat-Befehls besteht darin, den gesamten Inhalt einer Datei auf der Kom­man­do­zei­le aus­zu­ge­ben. Dies ist nützlich, um schnell einen Blick in eine Datei zu werfen. Anders als beim Öffnen der Datei in einem Editor brauchen Sie dabei nicht be­fürch­ten, die Datei aus Versehen zu verändern. Hier ein Beispiel für das Ausgeben einer Datei auf der Kom­man­do­zei­le:

cat ./path/to/file.txt

Schauen wir uns ein paar ge­bräuch­li­che Szenarien an. Stellen Sie sich vor, Sie sind per SSH auf einem Server ein­ge­loggt, auf dem WordPress läuft. Sie befinden sich im WordPress-Stamm­ver­zeich­nis und möchten den Inhalt der Kon­fi­gu­ra­ti­ons­da­tei 'wp-config.php' anzeigen. Dann genügt der folgende Aufruf des Linux-Cat-Befehls:

cat wp-config.php

Oft genügt die Ausgabe einer Datei auf der Kom­man­do­zei­le. In manchen Fällen möchten wir jedoch den Inhalt der Datei in die Zwi­schen­ab­la­ge kopieren. Ferner kann die sichtbare Ausgabe auf der Kom­man­do­zei­le bei sensiblen Daten ein Risiko dar­stel­len. In beiden Fällen bietet es sich an, die Ausgabe des Linux-Cat-Befehls an ein Programm wei­ter­zu­lei­ten, das die Daten in die Zwi­schen­ab­la­ge schreibt. Unter macOS gibt es für diesen Zweck das Kom­man­do­zei­len-Tool 'pbcopy'; unter Windows mit WSL/2 und den ver­schie­de­nen Linux-Dis­tri­bu­tio­nen stehen äqui­va­len­te Tools wie 'clip' bzw. 'xclip' zur Verfügung.

Be­trach­ten wir folgendes Beispiel: Wir möchten zum Ein­rich­ten eines GitHub Re­po­si­to­ry unseren öf­fent­li­chen SSH-Schlüssel kopieren. Nehmen wir ferner an, dass sich der Schlüssel mit Namen 'id_rsa.pub' im Ver­zeich­nis '.ssh/' in unserem Be­nut­zer­ver­zeich­nis befindet. Dann gelingt uns der Trick unter macOS mit dem folgenden Aufruf des Linux-Cat-Befehls:

cat ~/.ssh/id_rsa.pub > pbcopy

Wie der Name des Linux-Cat-Befehls andeutet, lassen sich mehrere Dateien kom­bi­nie­ren und auf einmal ausgeben. Stellen wir uns vor, wir hätten Listen von Früchten, Gemüsen und Milch­pro­duk­ten in drei Dateien im Ver­zeich­nis 'food/' ge­spei­chert. Mit dem folgenden Aufruf des Linux-Cat-Befehls kom­bi­nie­ren wir alle drei Listen zu einer einzigen und schreiben diese in die Datei 'food.txt':

cat ./food/fruit.txt ./food/veggies.txt ./food/dairy.txt > food.txt

Wie auf der Kom­man­do­zei­le üblich, können wir den Platz­hal­ter '*' verwenden, um alle Dateien eines Ver­zeich­nis­ses aus­zu­wäh­len:

cat ./food/*.txt > food.txt

Mit dem Linux-Cat-Befehl Text in eine Datei schreiben

Unter Nutzung der oben erwähnten Ausgabe-Um­lei­tun­gen können Sie mit dem Linux-Cat-Befehl Text in eine Datei schreiben. Dies lässt sich auf dreierlei Weise nutzen:

  1. Eine neue Datei anlegen, in die der ein­ge­ge­be­ne Text ge­schrie­ben wird.
  2. Eine exis­tie­ren­de Datei mit dem ein­ge­ge­be­nen Text über­schrei­ben.
  3. Den ein­ge­ge­be­nen Text an eine exis­tie­ren­de Datei anhängen.

Schauen wir uns die drei Szenarien an. Zunächst schreiben wir Text von der Kom­man­do­zei­le in eine nicht exis­tie­ren­de Datei:

  1. Linux-Cat-Befehl aufrufen und Ausgabe an eine nicht exis­tie­ren­de Datei wei­ter­lei­ten. Der Befehl nimmt Daten von der Stan­dard­ein­ga­be entgegen, bis das Dateiende-Zeichen („End-of-file“, EOF) gelesen wird:
cat > new.txt
  1. Ge­wünsch­ten Text auf der Kom­man­do­zei­le eingeben.
  2. Die Eingabe durch Drücken der Tas­ten­kom­bi­na­ti­on [Ctrl] + [D] beenden. Diese Tas­ten­kom­bi­na­ti­on ent­spricht dem Dateiende-Zeichen.

Der ein­ge­ge­be­ne Text befindet sich nun in der Datei 'new.txt'. Wir über­prü­fen dies durch Aufruf des Befehls 'cat new.txt'.

Nutzen wir nun denselben Ansatz, um den ein­ge­ge­be­nen Text an eine exis­tie­ren­de Datei an­zu­hän­gen:

  1. Linux-Cat-Befehl aufrufen und Ausgabe an exis­tie­ren­de Datei wei­ter­lei­ten:
cat >> existing.txt
  1. Ge­wünsch­ten Text auf der Kom­man­do­zei­le eingeben.
  2. Die Eingabe durch Drücken der Tas­ten­kom­bi­na­ti­on [Ctrl] + [D] beenden.

Nutzen wir statt der Ausgabe-Wei­ter­lei­tung '>>' das Symbol '>', wird die exis­tie­ren­de Datei mit dem ein­ge­ge­be­nen Text über­schrie­ben. Vorsicht damit: Der vorherige Inhalt der Datei geht dabei un­wi­der­ruf­lich verloren!

Mit dem Linux-Cat-Befehl Daten für weitere Ver­ar­bei­tung vor­be­rei­ten

Ein häufiger Ein­satz­zweck des Linux-Cat-Befehls besteht darin, Daten aus mehreren Dateien zu kom­bi­nie­ren. Oft werden die zu­sam­men­ge­fass­ten Daten durch Filter geleitet, um sie für die weitere Ver­ar­bei­tung vor­zu­be­rei­ten. Dieses Muster findet sich immer dann, wenn ähnliche Daten über mehrere Dateien verteilt vorliegen. Jede der Dateien enthält einen Eintrag pro Zeile. Denken Sie bei­spiels­wei­se an Listen von Namen, IP-Adressen oder der­glei­chen.

Um eine Übersicht sämt­li­cher Aus­prä­gun­gen der Daten zu bekommen, stellt sich folgende Aufgabe: Wir möchten alle Einträge kom­bi­nie­ren und dabei etwaige doppelte Einträge entfernen. Zu­al­ler­letzt sollen die Einträge sortiert und in eine neue Datei ge­schrie­ben werden. Stellen wir uns als konkretes Beispiel vor, wir hätten eine Menge von Text­da­tei­en. Jede Datei enthält die Namen der Akteure einer be­stimm­ten Folge der Comic-Serie „Die Simpsons“. Wenn wir die Einträge aller Dateien wie be­schrie­ben zu­sam­men­fas­sen, erhalten wir eine Liste aller Simpsons-Akteure.

Die in unserem Beispiel be­schrie­be­nen Dateien mit Simpsons-Akteuren der einzelnen Folgen sähen sche­ma­tisch in etwa so aus:

simpsons-1.txt simpsons-2.txt simpsons-3.txt
Lisa Marge Homer Flanders Bart Lisa Homer Milhouse Bart Maggie Nelson

Nehmen wir ferner an, dass sich die einzelnen Text­da­tei­en im Ver­zeich­nis 'simpsons/' befinden. Dann genügt der folgende Aufruf des Linux-Cat-Befehls, verkettet mit den Befehlen 'uniq' und 'sort', um die Liste aller Simpsons-Akteure in die Datei 'simpsons.txt' zu schreiben:

cat ./simpsons/*.txt | uniq | sort > simpsons.txt

Mit dem Linux-Cat-Befehl Zeilen einer Textdatei num­me­rie­ren

Ein ge­bräuch­li­cher Nutzen des Linux-Cat-Befehls besteht darin, die Zeilen einer Textdatei zu num­me­rie­ren. Stellen wir uns vor, wir hätten eine Textdatei mit Einträgen, je ein Eintrag pro Zeile. Nun möchten wir jeder Zeile die Zei­len­num­mer vor­an­stel­len. Dies ist z. B. dann nützlich, wenn wir die re­sul­tie­ren­de Datei zur Durch­sicht an eine andere Partei geben. So können beide Seiten sich in der Kor­re­spon­denz auf bestimmte Zeilen beziehen.

Mit dem Linux-Cat-Befehl geht das Num­me­rie­ren ganz einfach. Wir benutzen die '-n'-Option und eine Ausgabe-Umleitung:

cat -n doc.txt > doc.numbered.txt

Im be­schrie­be­nen Szenario kann es sinnvoll sein, alle Zeilen bis auf Leer­zei­len zu num­me­rie­ren. Ferner fassen wir mehrere Leer­zei­len zu einer einzigen zusammen. Dazu nutzen wir die Kom­bi­na­ti­on der Optionen '-s' und '-b':

cat -sb doc.txt > doc.numbered.txt

Mit dem Linux-Cat-Befehl Template-Dateien kom­bi­nie­ren

Ein bekanntes Muster aus der Web­pro­gram­mie­rung besteht darin, Dokumente aus Ver­satz­stü­cken zu­sam­men­zu­set­zen. Aus der Kom­bi­na­ti­on der so­ge­nann­ten Template-Parts mit ein­zig­ar­ti­gen Teilen ergeben sich viel­fäl­ti­ge Dokumente mit kon­sis­ten­ter Struktur. Nor­ma­ler­wei­se nutzt man dafür PHP mit der 'include'-Anweisung oder eine spezielle Template-Sprache wie Twig. Dasselbe Prinzip lässt sich aber auch mit dem Linux-Cat-Befehl umsetzen.

Stellen wir uns vor, wir hätten mehrere Template-Parts im Ver­zeich­nis 'parts/'. Bei allen erzeugten Do­ku­men­ten sollen Kopf- und Fußzeile identisch sein. Struktur und Inhalt der Kopf- und Fußzeile sind in den Dateien 'header.html' und 'footer.html' definiert. Ferner liegen mehrere Dateien mit den ei­gent­li­chen Inhalten der Dokumente im Ver­zeich­nis 'main/' vor. Die fertigen Dokumente werden im Aus­ga­be­ver­zeich­nis 'www/' ge­spei­chert. Zum Erzeugen eines Dokuments genügt der folgende Aufruf des Linux-Cat-Befehls:

cat ./parts/header.html ./main/home.html ./parts/footer.html > ./www/index.html

Ein weiteres Ein­satz­sze­na­rio: Eine Codebase soll zur Ver­öf­fent­li­chung mit einem Lizenz-Text versehen werden. Dabei soll die Lizenz am Anfang jeder Code-Datei eingefügt werden. Stellen wir uns das folgende Ver­zeich­nis-Layout vor:

  • Python Quelltext-Dateien mit Endung '.py' im Ver­zeich­nis 'src/'
  • eine Li­zenz­da­tei 'license.py' im Ver­zeich­nis 'inc/'
  • ein anfangs leeres Ver­zeich­nis 'dist/' zur Ablage der ver­ar­bei­te­ten Dateien

Wir nutzen den Linux-Cat-Befehl innerhalb einer for-Schleife. Bei jedem Durchlauf des Schlei­fen­kör­pers wird dieselbe Li­zenz­da­tei mit einer der Quelltext-Datei kon­ka­te­niert. Das Ergebnis wird in eine neue Quelltext-Datei mit selbem Namen ge­schrie­ben:

for file in ./src/*.py ; do
    cat ./inc/license.py "$file" > "./dist/${file}"
done

Mit dem Linux-Cat-Befehl ge­spal­te­ne Dateien zu­sam­men­fü­gen

Meist wird der Linux-Cat-Befehl für die Ver­ar­bei­tung von Plain-Text-Dateien genutzt. Jedoch funk­tio­niert der Befehl auch mit Bi­när­da­tei­en. Dies ist in einigen Szenarien nützlich. Zum einen lassen sich mit den Linux-Befehlen 'split' bzw. 'csplit' in mehrere Teile zerlegte Dateien wieder zu­sam­men­fü­gen. Wir zeigen hier den ge­ne­rel­len Ansatz:

# Dateiname der zu zerlegenden Datei
file_name="./path/to/file"
# wir geben die Dateiendung explizit an, um diese nach dem Zusammenfügen anzuhängen
extension="txt"
# Original-Datei in 10-Kilobyte große Stücke mit Prefix 'part_' zerlegen
split -b 10k "${file_name}.${extension}" part_
# einzelne Stücke zu einer neuen Datei zusammenfügen
cat part_* > combined
# ursprüngliche Dateiendung wiederherstellen
mv combined "combined.${extension}"

Zum anderen bietet sich der Linux-Cat-Befehl an, um partielle Downloads zu kom­bi­nie­ren. Viele Tools können Downloads un­ter­bre­chen und später fort­set­zen. Dies lohnt sich ins­be­son­de­re beim Download einer großen Datei über eine schwache Netz­werk­ver­bin­dung. Probieren Sie das Beispiel ruhig auf dem eigenen System aus:

# Test-Ordner auf dem Desktop anlegen
mkdir ~/Desktop/cat-test/
# in den Test-Ordner wechseln
cd ~/Desktop/cat-test/
# gemeinfreies Katzen-Bild von WikiMedia
image=https://upload.wikimedia.org/wikipedia/commons/f/fa/Cat_using_computer.jpg
# Bild mit 'curl' in zwei Teilen herunterladen
curl -s -r 0-500000 "$image" -o first-half &
curl -s -r 500001- "$image" -o second-half &
wait
# Teile kombinieren und in JPEG-Datei schreiben
cat first-half second-half > image.jpg

Mit dem Linux-Cat-Befehl Da­ten­strö­me kom­bi­nie­ren

Der Linux-Cat-Befehl lässt sich nutzen, um in der Vi­deo­ver­ar­bei­tung Da­ten­strö­me zu kom­bi­nie­ren. Wir zeigen hier das generelle Muster. Zunächst erzeugen wir mit dem ffmpeg-Befehl aus einem JPEG-Bild mehrere kurze Vi­deo­streams. Im Anschluss kom­bi­nie­ren wir diese zu einem durch­gän­gi­gen Video:

# vom Bild eine Schleife erzeugen
ffmpeg -y -loop 1 -i image.jpg -t 3 \
    -c:v libx264 -vf scale=w=800:h=-1 \
    still.ts
# vom Bild eine Aufblende erzeugen
ffmpeg -y -loop 1 -i image.jpg -t 3 \
    -c:v libx264 -vf scale=w=800:h=-1,fade=in:0:75 \
    fadein.ts
# vom Bild eine Abblende erzeugen
ffmpeg -y -loop 1 -i image.jpg -t 3 \
    -c:v libx264 -vf scale=w=800:h=-1,fade=out:0:75 \
    fadeout.ts
# Aufblende, Schleife und Abblende kombinieren
cat fadein.ts still.ts fadeout.ts > video.ts

Wann sollte man den Linux-Cat-Befehl nicht benutzen?

Die unnötige Nutzung des Linux-Cat-Befehls ist ein bekanntes „Anti-Pattern“. Dieses wird in zahl­rei­chen Artikel be­schrie­ben; es gibt sogar einen „Useless Use of Cat Award“. Als goldene Regel gilt: Der Linux-Cat-Befehl sollte dann genutzt werden, wenn es darum geht, mehrere Dateien zu kom­bi­nie­ren. Möchte man eine einzelne Datei ver­ar­bei­ten, geht dies meist auch ohne cat.

Schauen wir uns den ge­ne­rel­len Ansatz an, mit dessen Hilfe wir die über­flüs­si­ge Nutzung des Linux-Cat-Befehls mi­ni­mie­ren können. In Fo­ren­bei­trä­gen und Blog­ar­ti­keln findet sich oft das folgende Muster:

cat example.txt | less

Der Linux-Cat-Befehl wird auf­ge­ru­fen, um eine einzelne Datei aus­zu­le­sen. Die Ausgabe wird per Pipe-Umleitung an den less-Befehl wei­ter­ge­ge­ben, um den Inhalt der Datei Sei­ten­wei­se an­zu­zei­gen. Jedoch geht das auch einfacher:

less < example.txt

Wir rufen den less-Befehl auf und nutzen die Eingabe-Umleitung der Shell, um die Datei ein­zu­le­sen. Und selbst dieser Ansatz lässt sich noch weiter ver­ein­fa­chen:

less example.txt

Anstatt eine Eingabe-Umleitung zu nutzen, übergeben wir dem less-Befehl die zu ver­ar­bei­ten­de Datei. Denn fast alle Linux-Befehle nehmen den oder die Da­tei­na­men als Parameter entgegen.

Welche Al­ter­na­ti­ven zum Linux-Cat-Befehl gibt es?

Wie oben be­schrie­ben, wird der Linux-Cat-Befehl oft un­nö­ti­ger­wei­se ein­ge­setzt. Für einige der häu­figs­ten Ein­satz­sze­na­ri­en exis­tie­ren Al­ter­na­ti­ven. Drei Exemplare zeigen wir hier:

Befehl Al­ter­na­ti­ver Nutzen Beispiel
less / more Datei-Inhalt sei­ten­wei­se auf Kom­man­do­zei­le ausgeben less file.txt, more file.txt
touch Neue, leere Datei anlegen touch new.txt
echo Text in Datei schreiben echo "Text" > file.txt

Welche dem Linux-Cat-Befehl ähnlichen Befehle gibt es?

Es gibt eine Reihe von Linux-Befehlen, die dem cat-Befehl ähnlich sind. Als kleiner Insider-Scherz sind die Namen dieser Befehle oft an cat angelehnt. Zunächst gibt es den tac-Befehl, dessen Name einfach cat umgedreht ist. Und so funk­tio­niert der tac-Befehl auch: wie der Linux-Cat-Befehl, nurmit um­ge­kehr­ter Ausgabe. Beim Aufruf des tac-Befehls mit einer einzelnen Datei wird also zuerst die letzte Zeile aus­ge­ge­ben, anstatt wie bei cat die erste.

Ein weiterer Befehl mit Na­mens­ähn­lich­keit zum Linux-Cat-Befehl ist der nc-Befehl, abgekürzt für „Netcat“. Der Befehl wird oft als „Schweizer Ta­schen­mes­ser für TCP/IP“ be­zeich­net. Anstatt wie cat auf lokalen Dateien zu operieren, liest und schreibt Netcat Daten über Netz­werk­ver­bin­dun­gen. Mehr erfahren Sie in unserem Artikel zum Thema.

Als neuere Al­ter­na­ti­ve zum Linux-Cat-Befehl ist der bat-Befehl hin­zu­ge­kom­men. Auf der GitHub-Seite des Befehls wird dieser als „ein cat-Klon mit Flügeln“ („A cat clone with wings“) be­zeich­net. Der bat-Befehl behält die prin­zi­pi­el­le Funk­ti­ons­wei­se des Linux-Cat-Befehls bei, liefert al­ler­dings einige Komfort-Funk­tio­nen. Ins­be­son­de­re wird die Ausgabe von Quelltext-Dateien durch den bat-Befehl mit Syntax-High­light­ing versehen.

Zum Hauptmenü