Come usare il comando fold in Linux

Contenuti

Un prompt della shell su un PC Linux

El Linux fold Il comando porta risultati ribelli alle calcagna. Leggi grandi porzioni di testo, stringhe infinite e flussi grezzi che controllano la larghezza dell'output. Impara come.

Come funzionano le righe di testo nel terminale Linux

La prima regola di combattimento di Linux: conosci il tuo nemico. Quindi lo definiremo. Che cos'è esattamente una riga di testo?? È una sequenza di caratteri (lettere, numeri, simboli e spazi vuoti) che termina con un byte speciale che significa “iniziare una nuova linea”. Su Linux e Unix, il nuovo carattere di linea, chiamato anche interruzione di riga, utilizzato come indicatore di fine riga. Questo è un byte con un valore di 0x0a in esadecimale e dieci in decimale.

Diversi sistemi operativi utilizzano valori di byte diversi per indicare la fine di una riga. Windows utilizza una sequenza di due byte. Nei file di testo di Windows, il carattere di nuova riga è immediatamente seguito da carattere di ritorno dell'auto, che è 0x0d in esadecimale e tredici in decimale.

I termini “interruzione di linea” e “restituzione dell'auto” torna indietro alla macchina da scrivere. Il platino il cilindro attorno al quale era avvolta la carta, Stavo viaggiando su un carrello in movimento. Il carrello si spostava di un carattere a sinistra ogni volta che veniva premuto un tasto. Per iniziare una nuova linea, premuto una leva che ha riportato il carrello nella sua posizione originale, e che ha fatto girare il rullo e ha spostato la carta all'altezza di una linea. Questa azione era nota come ritorno a capo, e rotazione del cilindro (e l'avanzare della carta) era noto come interruzione di riga.

La leva è stata sostituita da una chiave quando la macchina da scrivere è stata elettrificata. La chiave è stata etichettata con l'etichetta Ritorno a capo o semplicemente Ritorno. Alcuni primi computer come el BBC Micro Ho ancora usato il nome Return in quello che ora chiamiamo il Enter chiave inglese.

Non riesco a vedere i nuovi caratteri di riga, di regola. Puoi vedere solo il loro effetto. Il nuovo carattere di riga obbliga il software che visualizza o elabora il testo a iniziare una nuova riga.

Ma, Qual è il problema delle lunghe file??

Testo senza caratteri di nuova riga, o con pochissimi, sarà troppo largo per poter essere letto comodamente nella finestra del terminale. Questo è fastidioso, ma si può fare.

Un ostacolo più pernicioso è avere a che fare con linee di lunghezza tale da rappresentare un ostacolo per il software che deve elaborare, trasmettere o ricevere il testo. Ciò potrebbe essere dovuto alla lunghezza del buffer interno o ad altri aspetti del software che non è possibile regolare.

Ma c'è una soluzione per questo, chiamata fold.

Primi passi con piega

Diamo un'occhiata a una parte del testo che ha molto, molto lungo. Si prega di notare che non stiamo parlando di frasi qui. (Anche se il testo è tratto da Moby Dick di Herman Melville, abbiamo il meglio di entrambi i mondi).

Una riga di testo è tutto, dall'ultimo carattere di nuova riga (o l'inizio del file se è la prima riga del file) fino al prossimo carattere di nuova riga, indipendentemente da cosa c'è in mezzo. La riga può contenere molte frasi. Può apparire frequentemente nella finestra del terminale. Ma è ancora un separare riga di testo.

Vediamo il testo nella sua forma originale:

meno moby-dick.txt

Il testo viene visualizzato in less:

Il testo si estende da un bordo all'altro della finestra, e le linee a capo sono brutte e rompono le parole nel mezzo.

Abbiamo un'altra versione del file con linee corte:

less short-lines-moby-dick.txt

Le righe in questo file sono molto più corte. Ogni riga termina con un nuovo carattere di riga.

Se usiamo il hexdump comando, noi possiamo guarda i valori dei byte all'interno del file e vedere i nuovi caratteri di linea. il -C L'opzione (canonico) formatta l'output per visualizzare i valori esadecimali nel corpo principale dello schermo con gli equivalenti di testo in una colonna accanto. Canalizzeremo l'output su less:

hexdump -C short-lines-moby-dick.txt | meno

Premendo la barra in avanti “/“entrerai lessfunzione di ricerca. Scriba “0un” e premi Enter. I caratteri di nuova riga verranno evidenziati nel testo. Puoi scorrere il file e vedere dove appaiono. Se richiesto, puoi spostare l'uscita lateralmente usando il Left Arrow e Right Arrow chiavi.

Avere un carattere di nuova riga alla fine di ogni riga può essere di per sé una limitazione. Non importa quale programma o finestra visualizza questo testo, le linee non possono essere adattate a finestre con una larghezza maggiore delle linee stesse. La lunghezza della riga è stata limitata dai caratteri di nuova riga.

Perciò, ci sono problemi con le code lunghe e corte.

Ridurre le lunghe code

il fold il comando ha un'opzione -w (larghezza) che ti consente di specificare una nuova larghezza massima per una sezione di testo. Mostreremo il testo di Moby Dick con una larghezza massima di 50 caratteri:

piega -w 50 moby-dick.txt

Il testo viene visualizzato nella finestra del terminale, con la nuova lunghezza massima del file. Il file originale non viene modificato. È solo l'uscita da fold che è riformattato.

A prima vista, questo sembra molto meglio. Ma le parole ancora si dividono a metà alla fine delle righe. È decisamente più facile da leggere, Ma alcune delle interruzioni di parole imbarazzanti sono stridenti.

Anche se il margine destro del testo sembra oscillare dentro e fuori, tutte le lunghezze delle linee sono uguali. Le righe che sembrano essere un carattere più corte delle altre terminano con uno spazio.

Divisione delle linee in spazi

Possiamo usare il -s (spazi) per assicurarti che le righe siano divise solo in caratteri spazio e che nessuna parola sia divisa su due righe.

piega -w 50 -s moby-dick.txt

L'output ora ha un margine destro irregolare, ma è più facile da leggere. Tutte le parole finiscono sulle righe da cui sono iniziate.

Allungare le linee più corte

Allo stesso tempo, accorciando le lunghe file, possiamo usare fold per cancellare le lunghezze delle linee imposte da linee più corte.

piega -w 75 short-lines-moby-dick.txt

I caratteri di nuova riga vengono rimossi e il testo ora va a capo alla lunghezza massima assegnata o precedente.

Apportare modifiche permanenti

fold non è possibile modificare il file originale. Se vuoi mantenere le modifiche, dovrai reindirizzare l'output da fold in un nuovo file. Reindirizzeremo l'output a un file chiamato “modificato-moby-dick.txt”.

piega -w 75 -s short-lines-moby-dick.txt > modificato-moby-dick.txt

Diamo un'occhiata al nostro nuovo file:

meno modificato-moby-dick.txt

Che aspetto ha il nostro nuovo file??

Il testo ora si adatta perfettamente alla nostra nuova larghezza della linea, che è più largo delle lunghezze delle linee del file originale.

Usa la piegatura con Streams

Possiamo usare fold per riformattare le sequenze di testo. Non si limita a lavorare solo con i file. Vediamo qual è l'output grezzo di journalctl sembra lo strumento. il -f (Continua) mostra le voci più recenti nel systemd quotidiano e aggiornamenti man mano che arrivano nuove voci.

sudo journalctl -f

L'output si avvolge intorno al bordo della finestra del terminale.

Non sembra così male, ma per dimostrazione, riduciamo un po' la sua larghezza. Canalizziamo l'uscita di journalctl entro fold. Stiamo impostando la larghezza massima su 65 caratteri e dividere le righe solo in spazi.

sudo journalctl -f | piega -w 65 -S

Lo schermo sembra un po' meno opprimente e anche un po' più ordinato.


I solidi muri di testo possono sembrare impenetrabili. Sono spiacevoli ed estenuanti da affrontare. Quando hai bisogno di poter vedere il bosco degli alberi, chiama a fold e imporre un po' di ordine.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.