Der Befehl ‚fold‘ in Linux: Textausgabe zähmen
Der Linux-Befehl fold
hilft, unübersichtliche Ausgaben zu strukturieren. Er ermöglicht das Lesen von breiten Textblöcken, endlosen Zeichenketten und unformatierten Datenströmen, indem die Ausgabebreite kontrolliert wird. Hier erfahren Sie, wie das geht.
Das Innenleben von Textzeilen im Linux-Terminal
Die erste Regel im Umgang mit Linux: Kenne dein Gegenüber. Was genau ist eine Textzeile? Sie besteht aus einer Folge von Zeichen – Buchstaben, Zahlen, Symbolen und Leerzeichen – die durch ein spezielles Byte beendet wird, welches „neue Zeile beginnen“ bedeutet. In Linux und Unix markiert das Newline-Zeichen (auch Zeilenvorschub genannt) das Zeilenende. Dieses Byte hat den hexadezimalen Wert 0x0a oder dezimal den Wert zehn.
Andere Betriebssysteme verwenden unterschiedliche Bytewerte für das Zeilenende. Windows nutzt eine Zwei-Byte-Sequenz. In Windows-Textdateien folgt auf das Newline-Zeichen unmittelbar das Wagenrücklaufzeichen, mit dem Hexadezimalwert 0x0d und dem Dezimalwert dreizehn.
Die Begriffe „Linefeed“ und „Carriage Return“ stammen aus der Ära der Schreibmaschine. Der Zylinder, um den das Papier gelegt wurde, war auf einem beweglichen Wagen montiert. Bei jeder Eingabe eines Zeichens bewegte sich dieser Wagen eine Zeichenbreite nach links. Um eine neue Zeile zu beginnen, wurde ein Hebel betätigt, der den Wagen in seine Ausgangsposition brachte, die Walze drehte und das Papier eine Zeile weiterbewegte. Dieser Vorgang hieß Wagenrücklauf, die Drehung des Zylinders (und der Papiervorschub) war der Zeilenvorschub.
Mit der Elektrifizierung der Schreibmaschine wurde der Hebel durch eine Taste ersetzt. Diese trug die Aufschrift „Carriage Return“ oder einfach „Return“. Einige frühe Computer wie der BBC Micro übernahmen den Begriff „Return“ für die Taste, die wir heute als „Enter“-Taste kennen.
Newline-Zeichen sind in der Regel unsichtbar. Ihre Wirkung ist jedoch deutlich. Das Newline-Zeichen zwingt Software, die Text anzeigt oder verarbeitet, zu einem Zeilenumbruch.
Das Problem mit zu langen Textzeilen
Text, der wenige oder keine Zeilenumbrüche enthält, ist zu breit für ein bequemes Lesen im Terminalfenster. Das ist zwar lästig, aber handhabbar.
Ein schwerwiegenderes Problem sind Textzeilen, die so lang sind, dass sie Software beeinträchtigen, die den Text verarbeiten, übertragen oder empfangen muss. Dies kann durch interne Pufferbeschränkungen oder andere Aspekte der Software verursacht werden, die sich nicht ändern lassen.
Hier kommt fold
ins Spiel.
Erste Schritte mit ‚fold‘
Betrachten wir einen Textabschnitt mit sehr langen Zeilen. Beachten Sie, dass es sich hier nicht um Sätze handelt (obwohl der Text aus Herman Melvilles Moby Dick stammt).
Eine Textzeile erstreckt sich von dem letzten Zeilenumbruchzeichen (oder dem Dateianfang, wenn es die erste Zeile ist) bis zum nächsten Zeilenumbruchzeichen, ungeachtet des Inhalts dazwischen. Eine Zeile kann mehrere Sätze umfassen und im Terminalfenster mehrmals umbrochen werden, bleibt aber trotzdem eine einzelne Textzeile.
So sieht der Text in seiner rohen Form aus:
less moby-dick.txt
Der Text wird mit less
angezeigt:
Der Text erstreckt sich über die gesamte Fensterbreite, mit unschönen und mitten in Wörtern erfolgten Zeilenumbrüchen.
Wir haben auch eine Version der Datei mit kürzeren Zeilen:
less short-lines-moby-dick.txt
Die Zeilen dieser Datei sind wesentlich kürzer und enden jeweils mit einem Newline-Zeichen.
Mit dem Befehl hexdump
können wir die Byte-Werte in der Datei anzeigen und die Newline-Zeichen sehen. Die Option -C
(kanonisch) formatiert die Ausgabe, um hexadezimale Werte in der Hauptzeile anzuzeigen (Details zu hexdump).