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 less
funzione 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.