Linux fold-kommandoen bringer uregerligt output til hæl. Læs brede bidder af tekst, endeløse strenge og uformaterede streams ved at kontrollere bredden af outputtet. Lær hvordan.
Indholdsfortegnelse
Hvordan tekstlinjer fungerer i Linux-terminalen
Første regel i Linux-kamp: kend din fjende. Så lad os definere det. Hvad er en tekstlinje egentlig? Det er en sekvens af tegn – bogstaver, tal, symboler og mellemrum – der afsluttes af en speciel byte, der betyder “start en ny linje.” I Linux og Unix, den nye linje karakter, også kaldet en linefeed, bruges som slutningen af linje-indikator. Dette er en byte med en værdi på 0x0a in hexadecimal og ti i decimaler.
Forskellige operativsystemer bruger forskellige byteværdier til at angive slutningen af en linje. Windows bruger en to-byte sekvens. I Windows-tekstfiler efterfølges den nye linje umiddelbart af vognretur karakter, som er 0x0d i hexadecimal og tretten i decimal.
Begreberne “linefeed” og “carriage return” går tilbage til skrivemaskinen. Pladen, cylinderen, som papiret var viklet om, var monteret på en bevægelig vogn. Vognen flyttede en karakters bredde til venstre, hver gang du trykker på en tast. For at starte en ny linje skubbede du et håndtag, der bragte vognen tilbage til sin oprindelige position, og som roterede rullen og flyttede papiret opad i højden af en linje. Denne handling blev kendt som vognretur, og rotationen af cylinderen (og fremføringen af papiret) var kendt som en linefeed.
Håndtaget blev erstattet af en nøgle, da skrivemaskinen blev elektrificeret. Nøglen var mærket Carriage Return eller bare Return. Nogle tidlige computere som f.eks BBC Micro stadig brugt navnet Return på det, vi nu kalder Enter-tasten.
Du kan som regel ikke se nye linjetegn. Du kan kun se deres effekt. Newline-tegnet tvinger software, der viser eller behandler tekst, til at starte en ny linje.
Men hvad er problemet med lange linjer?
Tekst uden eller meget få nylinjetegn vil være for bred til at kunne læses komfortabelt i terminalvinduet. Det er irriterende, men det kan lade sig gøre.
Et mere skadeligt problem er at skulle håndtere linjer af en sådan længde, at de udgør et problem for softwaren, der skal behandle, transmittere eller modtage teksten. Dette kan være forårsaget af interne bufferlængder eller andre aspekter af softwaren, som du ikke kan justere.
Men der er en løsning på det, kaldet fold.
Første trin med fold
Lad os tage et kig på en del af teksten, der har meget, meget lange linjer i sig. Bemærk, at vi ikke taler om sætninger her. (Selvom teksten kommer fra Herman Melvilles Moby Dick, så vi har det bedste fra begge verdener.)
En tekstlinje er alt fra det sidste linjeskifttegn (eller starten af filen, hvis det er den første linje i filen) helt op til det næste linjeskifttegn, uanset hvad der er imellem. Linjen kan indeholde mange sætninger. Det kan pakkes rundt i terminalvinduet mange gange. Men det er stadig en enkelt tekstlinje.
Lad os se på teksten i dens rå form:
less moby-dick.txt
Teksten vises i mindre:
Teksten strækker sig fra den ene kant af vinduet til den anden, og stregen ombrydes er grimme, og de bryder ord på midten.
Vi har en anden version af filen med korte linjer:
less short-lines-moby-dick.txt
Linjerne i denne fil er meget kortere. Hver linje afsluttes med et nylinjetegn.
Hvis vi bruger hexdump-kommandoen, kan vi det se på byte-værdierne i filen og se newline-tegnene. Indstillingen -C (kanonisk) formaterer outputtet til at vise hexadecimale værdier i hovedet