Как да използвате командата fold в Linux

Командата за сгъване на Linux води до непокорен резултат. Четете широки парчета текст, безкрайни низове и неформатирани потоци, като контролирате ширината на изхода. Научи как.

Как работят текстовите редове в терминала на Linux

Първото правило на битката с Linux: познайте врага си. Така че нека го дефинираме. Какво точно представлява един ред от текст? Това е поредица от знаци – букви, цифри, символи и интервали – която завършва със специален байт, който означава „започнете нов ред“. В Linux и Unix, символа за нов ред, наричан още превод на ред, се използва като индикатор за края на реда. Това е байт със стойност 0x0a in шестнадесетичен и десет в десетичната запетая.

Различните операционни системи използват различни стойности на байтове, за да посочат края на реда. Windows използва двубайтова последователност. В текстовите файлове на Windows символът за нов ред е последван веднага от символ за връщане на карета, което е 0x0d в шестнадесетичен и тринадесет в десетичен.

  Как да архивирате SD карти и флаш устройства на Linux с DD

Термините „linefeed“ и „carriage return“ датират отпреди към пишещата машина. валиката, цилиндърът, около който беше увита хартията, беше монтиран на подвижна карета. Каретката премества ширината на един знак наляво всеки път, когато натиснете клавиш. За да започнете нова линия, натискате лост, който връща каретката в първоначалното й положение и който завърта ролката и премества хартията нагоре с височината на една линия. Това действие беше известно като връщане на каретката, а въртенето на цилиндъра (и придвижването на хартията) беше известно като преместване на линия.

Лостът беше заменен от ключ, когато пишещата машина се електрифицира. Ключът беше с надпис Carriage Return или просто Return. Някои ранни компютри като напр BBC Micro все още използва името Return на това, което сега наричаме клавиш Enter.

  Как да стартирате програма за Linux при стартиране със systemd

По правило не можете да видите знаци за нов ред. Можете да видите само ефекта им. Знакът за нов ред принуждава софтуера, който показва или обработва текст, да започне нов ред.

Но какъв е проблемът с дългите опашки?

Текстът без или с много малко знаци за нов ред в него ще бъде твърде широк, за да се чете удобно в прозореца на терминала. Това е досадно, но е изпълнимо.

По-опасен проблем е да се налага да се справите с редове с такава дължина, че да създават проблем за софтуера, който трябва да обработи, предаде или получи текста. Това може да е причинено от вътрешни дължини на буфера или други аспекти на софтуера, които не можете да коригирате.

Но има решение за това, наречено сгъване.

Първи стъпки със сгъване

Нека да разгледаме част от текста, която има много, много дълги редове. Имайте предвид, че тук не говорим за изречения. (Въпреки че текстът идва от Моби Дик на Херман Мелвил, така че имаме най-доброто от двата свята.)

  Как да инсталирате LPlayer на Linux

Ред с текст е всичко от последния знак за нов ред (или началото на файла, ако е първият ред във файла) чак до следващия знак за нов ред, независимо какво е между. Редът може да съдържа много изречения. Може да се обвие в прозореца на терминала много пъти. Но това все още е един ред текст.

Нека разгледаме текста в суров вид:

less moby-dick.txt

Текстът се показва в по-малко:

Текстът се простира от единия край на прозореца до другия, а обвивките на линиите са грозни и разбиват думите в средата.

Имаме друга версия на файла с кратки редове:

less short-lines-moby-dick.txt

Редовете в този файл са много по-къси. Всеки ред завършва със знак за нов ред.

Ако използваме командата hexdump, можем погледнете стойностите на байтовете във файла и вижте знаците за нов ред. Опцията -C (канонична) форматира изхода, за да покаже шестнадесетични стойности в главния