Tutonaut

Katzenmissbrauch, und warum ich ihn betreibe

Katzenmissbrauch ist im englischen Sprachraum völlig in Ordnung – und sogar nützlich! Spoiler: cat foobar ;)

Tja, was soll ich sagen, ich bin ein Katenzmissbraucher, ein stetiger, wider besseres Wissen – zumindest im englischen Sprachraum. Wenn ich mich als cat abuser oute, dann fliegen vielleicht ein paar Steine weniger. Beim Schreiben dieses Artikels kamen keine Tiere … – ach, Ihr wisst schon, woll?!

katze foobar?

Konkatenation – was für ein hübsches Wort, oder? Konkatenieren heißt, mehrere Inhalte/Dinge der Reihe nach zu einem Ganzen zusammenzufügen – verketten. Beispielsweise aus zwei Textdateien eine mit beiden Texten erstellen. Auf der Kommandozeile sieht man das meist in der Form cat datei1.txt datei2.txt > datei_alles.txt. Das cat steht freilich für concatenate und spricht sich auch eher „katt“ als das miauende Pendat „kätt“.

In der Praxis seht Ihr in Bezug auf cat häufig solche Konstruktionen:

cat datei.txt | grep foobar

Das funktioniert, ist aber furchtbar sinnlos. Die „richtige“ Variante wäre:

grep foobar < datei.txt

cat ist hier schlicht und ergreifend überflüssig, man spricht auch von Useless Use of Cat (UUOC). Technisch gesehen ist der eigentliche Vorteil aber, dass grep auf die Datei zufälligen Zugriff bekommt; kommen die Inhalte hingegen von cat, werden sie einfach der Reihe nach an grep gereicht.

But trotzdem

Man muss aber auch dazu sagen: In vielen Fällen tut es überhaupt nicht weh – nicht der CPU, nicht der Performance und cat sowieso nicht. Ich für meinen Teil werde jedenfalls weiterhin Dinge wie

cat datei | sort | uniq | nl

schreiben. Aus einem ganz einfachen Grund: Es ist besser lesbar, da die ganze Pipe schlicht von links nach rechts gelesen werden kann. Und bei komplexeren Pipes oder wenn der Leser kein Kommandozeilenveteran ist, ist das wichtiger als das maximale Maß an Eleganz anzustreben. Da nimmt man als Autor auch die obligatorischen Kommentare inhaltlich unterforderter Code Monkeys in Kauf.

Das anfängliche cat nistet sich auch schnell ein, wenn man längere Pipes/Mini-Skripte entwickelt, man sich herantastet – in der history könnte das so aussehen:

cat datei | sort
cat datei | sort | uniq
cat datei | sort -u
cat datei | sort -un
cat datei ...

Es ist schlicht und ergreifend einfacher, den letzten Befehl aufzurufen, die letzten Zeichen zu löschen und etwas Neues zu versuchen. Und wenn man dann endlich das gewünschte Ergebnis hat, hat wohl auch manch einer keine Lust mehr, nach der ganzen Frickelei am Ende auch noch Schönheitsreparaturen vorzunehmen. Aus dem gleichen Grund dürfte es Myriaden zusammengebauter, aber nicht bemalter/beklebter Ü-Ei-Figuren geben. Oder auch unverputzte Garagen.

Und noch ein letztes Argumentchen: Relevant dürfte das Ganze eh nur bei komplexeren Skripten sein und da gibt es nicht wenige die schnell meinen, das wiederum sei auch Blödsinn. Warum ein Skript aus 30 verschiedenen Programmen zusammenpipen statt gleich Python oder sonst eine Programmiersprache zu nutzen? Insofern: Ja, es ist cat-Missbrauch – aber kein Grund, sich ins Hemd zu machen.

„So eine Scheisse“

Wer hier mit der Überschrift hadert: Ja klar, das darf man schon reißerischenBullshit nennen ;) Doch was soll ich machen? Das Wort concatenation dürfte nicht soooo bekannt sein, also denken Menschen bei cat wohl automatisch an Kätt. Und viel schlimmer: Die lieben Kollegen können Terminal-Themen sowieso schon nicht leiden – und dann auch noch ein Thema, das nichtmal wirklich hilfreich ist? Da könnte ich es auch gleich mit Selbstverunglimpfung versuchen. Aber nicht drüber schreiben? Is‘ auch nich‘ drin, also seht’s mir nach. Obey Glow Cat Dog!

catdognuts
cat rule
cats rule

Mehr zum Aufregen haben wir hier, etwas über das Nichtaufregen hier – und wer das hier nicht mag, missbraucht auch Katzen!

Mirco Lang

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler.

Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds.

Wenn ich Dir helfen konnte und/oder Du hier mehr über Open Source, Linux, Bastelkram oder auch Windows-Basics lesen möchtest:
Spendier mir einen Kaffee via Paypal.

1 Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

  • „Es ist besser lesbar, da die ganze Pipe schlicht von links nach rechts gelesen werden kann.“ – Jepp!

    „Es ist schlicht und ergreifend einfacher, den letzten Befehl aufzurufen, die letzten Zeichen zu löschen und etwas Neues zu versuchen.“ – Jepp!

    Auch für meine gelegentlichen Skript-Bedürfnisse trifft das voll zu. Eleganz? Performanz? Untergeordnet im Vergleich zu den beiden genannten Vorteilen.

Do NOT follow this link or you will be banned from the site!