Tem Linux `fold`-kommandoen: Organiser uregjerlige tekstutdata!

Linux-kommandoen `fold` temmer ustyrlige utdata. Den gir deg kontroll over bredden på utdata, slik at du kan håndtere store tekstblokker, lange strenger og uformaterte strømmer. Lær hvordan du bruker den.

Tekstlinjer i Linux-terminalen – en forklaring

Første bud i Linux-verdenen: Kjenn din «fiende». La oss derfor definere hva en tekstlinje egentlig er. Det er en sekvens av tegn – bokstaver, tall, symboler og mellomrom – som avsluttes med en spesiell byte som signaliserer «begynn en ny linje». I Linux og Unix brukes linjeskifttegnet, også kalt linjefremføring, som markør for slutten av en linje. Dette er en byte med verdien 0x0a i heksadesimal og ti i desimal.

Forskjellige operativsystemer bruker ulike byteverdier for å angi slutten av en linje. Windows benytter en to-bytes sekvens. I Windows-tekstfiler følges linjeskifttegnet umiddelbart av et vognreturtegn, som er 0x0d i heksadesimal og tretten i desimal.

Begrepene «linjefremføring» og «vognretur» stammer fra skrivemaskinens tid. Platen, sylinderen papiret var festet rundt, var montert på en bevegelig vogn. Vognen flyttet seg én tegnbredde til venstre for hvert tastetrykk. For å starte en ny linje, dyttet man en spak som førte vognen tilbake til sin startposisjon, og som roterte rullen og flyttet papiret oppover tilsvarende en linjes høyde. Denne handlingen ble kjent som vognretur, mens rotasjonen av sylinderen (og papirfremføringen) ble kalt linjefremføring.

Spaken ble erstattet med en tast da skrivemaskinen ble elektrisk. Denne tasten ble merket «Carriage Return» eller bare «Return». Noen tidlige datamaskiner, som for eksempel BBC Micro, brukte fortsatt navnet «Return» på det vi nå kaller Enter-tasten.

Linjeskifttegn er som regel usynlige. Man merker bare effekten. Linjeskifttegnet tvinger programvare som viser eller behandler tekst, til å starte en ny linje.

Hva er problemet med lange linjer?

Tekst uten eller med svært få linjeskifttegn vil være for bred til å leses komfortabelt i terminalvinduet. Det er irriterende, men håndterbart.

Et større problem oppstår når linjene er så lange at de skaper problemer for programvaren som skal behandle, overføre eller motta teksten. Dette kan skyldes interne bufferlengder eller andre aspekter ved programvaren som man ikke kan justere.

Men det finnes en løsning: kommandoen `fold`.

Slik bruker du `fold`

La oss se på et tekstutdrag med veldig lange linjer. Merk at vi ikke snakker om setninger her. (Teksten er fra Herman Melvilles Moby Dick, så vi har det beste fra begge verdener.)

En tekstlinje er alt fra det forrige linjeskifttegnet (eller starten av filen hvis det er første linje) helt frem til det neste linjeskifttegnet, uavhengig av hva som står i mellom. Linjen kan inneholde mange setninger. Den kan strekke seg over terminalvinduet flere ganger. Men det er fortsatt én enkelt tekstlinje.

La oss se teksten i sin rå form:

less moby-dick.txt

Teksten vises med kommandoen `less`:

Teksten strekker seg fra kant til kant av vinduet, linjene er stygge, og ord brytes midt i.

Vi har en annen versjon av filen med korte linjer:

less short-lines-moby-dick.txt

Linjene i denne filen er mye kortere. Hver linje avsluttes med et linjeskifttegn.

Ved hjelp av `hexdump`-kommandoen kan vi undersøke byteverdiene i filen og observere linjeskifttegnene. Alternativet `-C` (kanonisk) formaterer utdataene slik at heksadesimale verdier vises i hoveddelen.