Fold: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
K (tf)
K (hc)
Zeile 13: Zeile 13:
Wenn man diese Datei nun mittels fold ausgeben lässt, erhält man dieses:
Wenn man diese Datei nun mittels fold ausgeben lässt, erhält man dieses:


$ fold datei
{{hc|fold datei|Dies ist ein Text, der bei einem normalgroßen Terminalfenster nach 81 Zeichen um
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
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
bruch definieren zu können. Dafür kann man sich des Standardprogramms „fold“ bed
ienen.}}
ienen.


Dies entspricht dem, was ein „cat datei“ erzeugt. Wenn man hingegen möchte, dass beim Umbrechen die Wörter nicht zerhackt werden, sondern ein Zeilenumbruch nur an Wortgrenzen (Leerzeichen) stattfindet, muss man fold um den parameter „-s“ erweitern
Dies entspricht dem, was ein „cat datei“ erzeugt. Wenn man hingegen möchte, dass beim Umbrechen 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
{{hc|fold -s datei|Dies ist ein Text, der bei einem normalgroßen Terminalfenster nach 81 Zeichen  
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  
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“  
Umbruch definieren zu können. Dafür kann man sich des Standardprogramms „fold“  
bedienen.}}
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 nach 34 Zeichen umgebrochen wird, sieht das so aus:
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 nach 34 Zeichen umgebrochen wird, sieht das so aus:


$ fold -w 34 datei
{{hc|fold -w 34 datei|Dies ist ein Text, der bei einem n
Dies ist ein Text, der bei einem n
ormalgroßen Terminalfenster nach 8
ormalgroßen Terminalfenster nach 8
1 Zeichen umgebrochen werden würde
1 Zeichen umgebrochen werden würde
. Allerdings wäre es hier nun sehr
. Allerdings wäre es hier nun sehr
schön, einen anderen Umbruch defi
  schön, einen anderen Umbruch defi
nieren zu können. Dafür kann man s
nieren zu können. Dafür kann man s
ich des Standardprogramms „fold“ b
ich des Standardprogramms „fold“ b
edienen.}}
edienen.


Wenn man nun noch den Parameter „-s“ dranhängt, damit die Wortgrenzen berücksichtigt werden, bekommt man folgendes:
Wenn man nun noch den Parameter „-s“ dranhängt, damit die Wortgrenzen berücksichtigt werden, bekommt man folgendes:


$ fold -sw 34 datei
{{hc|fold -sw 34 datei|Dies ist ein Text, der bei einem  
Dies ist ein Text, der bei einem  
normalgroßen Terminalfenster nach  
normalgroßen Terminalfenster nach  
81 Zeichen umgebrochen werden  
81 Zeichen umgebrochen werden  
würde. Allerdings wäre es hier  
würde. Allerdings wäre es hier  
nun sehr schön, einen anderen  
nun sehr schön, einen anderen  
Umbruch definieren zu können.  
Umbruch definieren zu können.  
Dafür kann man sich des  
Dafür kann man sich des  
Standardprogramms „fold“ bedienen.}}
Standardprogramms „fold“ bedienen.


In der [[Manpage]] zu „fold“ stehen noch weitere Parameter, mittels derer man die Zählweise beeinflussen  kann.
In der [[Manpage]] zu „fold“ stehen noch weitere Parameter, mittels derer man die Zählweise beeinflussen  kann.
Zeile 56: Zeile 52:
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:
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 -
{{hc|fold -sw 30 -|Dieser Text hier wird direkt an fold übergeben, das den Text nach 30 Spalt
Dieser Text hier wird direkt an fold übergeben, das den Text nach 30 Spalt
en an der davorliegenden Wortgrenze umbricht.[Enter, dann Strg+D]
en an der davorliegenden Wortgrenze umbricht.[Enter, dann Strg+D]
Dieser Text hier wird direkt  
Dieser Text hier wird direkt  
an fold übergeben, das den  
an fold übergeben, das den  
Text nach 30 Spalten an der  
Text nach 30 Spalten an der  
davorliegenden Wortgrenze  
davorliegenden Wortgrenze  
umbricht.}}
umbricht.


Mittels „fold -sw 30 - > zieldatei“ kann man sich die Ausgabe statt auf die Standardausgabe auch in die Datei „zieldatei“ schreiben lassen.
Mittels „fold -sw 30 - > zieldatei“ kann man sich die Ausgabe statt auf die Standardausgabe auch in die Datei „zieldatei“ schreiben lassen.
Zeile 69: Zeile 64:
Eine weitere Möglichkeit ist, mittels Pipe etwas an fold zu übergeben:
Eine weitere Möglichkeit ist, mittels Pipe etwas an fold zu übergeben:


$ uname -a | fold -sw 30
{{hc|uname -a | fold -sw 30|Linux demo 2.6.27-ARCH #1 SMP  
Linux demo 2.6.27-ARCH #1 SMP  
PREEMPT Mon Dec 8 23:24:22  
PREEMPT Mon Dec 8 23:24:22  
CET 2008 x86_64 Intel(R)  
CET 2008 x86_64 Intel(R)  
Core(TM)2 Duo CPU E8400 @  
Core(TM)2 Duo CPU E8400 @  
3.00GHz GenuineIntel GNU/Linux}}
3.00GHz GenuineIntel GNU/Linux


… im Gegensatz zu …
… im Gegensatz zu …


$ uname -a
{{hc|uname -a|Linux demo 2.6.27-ARCH #1 SMP PREEMPT Mon Dec 8 23:24:22 CET 2008 x86_6
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}}
4 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz GenuineIntel GNU/Linux


Auch die Eingabeumleitung funktioniert mit fold:
Auch die Eingabeumleitung funktioniert mit fold:


$ fold -sw 30 < datei
{{hc|fold -sw 30 < datei|Dies ist ein Text, der bei  
Dies ist ein Text, der bei  
einem normalgroßen  
einem normalgroßen  
Terminalfenster nach 81  
Terminalfenster nach 81  
Zeichen umgebrochen werden  
Zeichen umgebrochen werden  
würde. Allerdings wäre es  
würde. Allerdings wäre es  
hier nun sehr schön, einen  
hier nun sehr schön, einen  
anderen Umbruch definieren zu  
anderen Umbruch definieren zu  
können. Dafür kann man sich  
können. Dafür kann man sich  
des Standardprogramms „fold“  
des Standardprogramms „fold“  
bedienen.}}
bedienen.


[[Kategorie:Konsole]]
[[Kategorie:Konsole]]
[[Kategorie:Tipps und Tricks]]
[[Kategorie:Tipps und Tricks]]

Version vom 29. November 2012, 14:42 Uhr

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 zum 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 Umbrechen 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 nach 34 Zeichen umgebrochen wird, sieht das so aus:

fold -w 34 datei
Dies ist ein Text, der bei einem n
ormalgroßen Terminalfenster nach 8
1 Zeichen umgebrochen werden würde
. Allerdings wäre es hier nun sehr
 schön, einen anderen Umbruch defi
nieren zu können. Dafür kann man s
ich des Standardprogramms „fold“ b
edienen.

Wenn man nun noch den Parameter „-s“ dranhängt, damit die Wortgrenzen berücksichtigt werden, bekommt man folgendes:

fold -sw 34 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.[Enter, dann Strg+D]
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.