Fold
Wenn man in einem Terminalfenster eine Datei, die Text beinhaltet, mittels cat ausgibt, wird dieser Text am Rand des Terminalfensters umgebrochen. Je breiter das Fenster ist, desto länger sind dadurch die Zeilen. Mittels des Programms fold ist es möglich, den Zeilenumbruch zu beeinflussen.
So kann man zuum Beispiel angeben, dass der Text nach 30 Zeichen umgebrochen werden soll. Außerdem kann beeinflusst werden, wie umgebrochen werden soll. Wenn die Umbruch-Angabe für fold allerdings länger ist, als das Terminal ermöglicht, wird zusätzlich noch am Terminal-„Ende“ umgebrochen.
Verwendung
Das Programm kann – wie die meisten Linux-Programme – entweder direkt aufgerufen werden und akzeptiert neben der Parameter eine Datei oder „stdin“ (repräsentiert durch ein Minus) als Quelle. Natürlich können auch hier Ein- und Ausgabe-Umleitungen verwendet werden.
Der einfachste Aufruf ist jedoch, einfach einen Dateinamen zu übergeben. Der Inhalt der Datei wird dann ausgegeben, und dabei nach 80 „Spalten“ umgebochen. Im Beispiel wird die Datei „datei“ benutzt, in der ohne Umbrüche folgender Text steht:
- Dies ist ein Text, der bei einem normalgroßen Terminalfenster nach 81 Zeichen umgebrochen werden würde. Allerdings wäre es hier nun sehr schön, einen anderen Umbruch definieren zu können. Dafür kann man sich des Standardprogramms „fold“ bedienen.
Wenn man diese Datei nun mittels fold ausgeben lässt, erhält man dieses:
$ fold datei Dies ist ein Text, der bei einem normalgroßen Terminalfenster nach 81 Zeichen um gebrochen werden würde. Allerdings wäre es hier nun sehr schön, einen anderen Um bruch definieren zu können. Dafür kann man sich des Standardprogramms „fold“ bed ienen.
Dies entspricht dem, was ein „cat datei“ erzeugt. Wenn man hingegen möchte, dass beim Umgrechen die Wörter nicht zerhackt werden, sondern ein Zeilenumbruch nur an Wortgrenzen (Leerzeichen) stattfindet, muss man fold um den parameter „-s“ erweitern
$ fold -s datei Dies ist ein Text, der bei einem normalgroßen Terminalfenster nach 81 Zeichen umgebrochen werden würde. Allerdings wäre es hier nun sehr schön, einen anderen Umbruch definieren zu können. Dafür kann man sich des Standardprogramms „fold“ bedienen.
Der eigentliche Einsatzzweck des Programms ist allerdings, das Schmalermachen von Texten. Dazu übergibt man dem Aufruf den Parameter „-w N“, wobei „N“ der gewünschten Breite entspricht. Wenn man will, dass der Text bei 30 Zeilen umgebrochen wird, sieht das so aus:
$ fold -w 30 datei Dies ist ein Text, der bei ein em normalgroßen Terminalfenste r nach 81 Zeichen umgebrochen werden würde. Allerdings wäre es hier nun sehr schön, einen anderen Umbruch definieren zu können. Dafür kann man sich de s Standardprogramms „fold“ bed ienen.
Wenn man nun noch den Parameter „-s“ dranhängt, damit die Wortgrenzen berücksichtigt werden, bekommt man folgendes:
$ fold -sw 30 datei Dies ist ein Text, der bei einem normalgroßen Terminalfenster nach 81 Zeichen umgebrochen werden würde. Allerdings wäre es hier nun sehr schön, einen anderen Umbruch definieren zu können. Dafür kann man sich des Standardprogramms „fold“ bedienen.
In der Manpage zu „fold“ stehen noch weitere Parameter, mittels derer man die Zählweise beeinflussen kann.
Umleitungsbeispiele
Wie oben beschrieben kann fold auch von der Standardeingabe lesen. Wenn man also einen Text schreiben will, der nach N zeichen umgebrochen werden soll, und man dies nicht manuell machen will, kann man folgendes machen:
$ fold -sw 30 - Dieser Text hier wird direkt an fold übergeben, das den Text nach 30 Spalt en an der davorliegenden Wortgrenze umbricht. Dieser Text hier wird direkt an fold übergeben, das den Text nach 30 Spalten an der davorliegenden Wortgrenze umbricht.
Mittels „fold -sw 30 - > zieldatei“ kann man sich die Ausgabe statt auf die Standardausgabe auch in die Datei „zieldatei“ schreiben lassen.
Eine weitere Möglichkeit ist, mittels Pipe etwas an fold zu übergeben:
$ uname -a | fold -sw 30 Linux demo 2.6.27-ARCH #1 SMP PREEMPT Mon Dec 8 23:24:22 CET 2008 x86_64 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz GenuineIntel GNU/Linux
… im Gegensatz zu …
$ uname -a Linux demo 2.6.27-ARCH #1 SMP PREEMPT Mon Dec 8 23:24:22 CET 2008 x86_6 4 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz GenuineIntel GNU/Linux
Auch die Eingabeumleitung funktioniert mit fold:
$ fold -sw 30 < datei Dies ist ein Text, der bei einem normalgroßen Terminalfenster nach 81 Zeichen umgebrochen werden würde. Allerdings wäre es hier nun sehr schön, einen anderen Umbruch definieren zu können. Dafür kann man sich des Standardprogramms „fold“ bedienen.