Команда fold

Команда fold предназначена для вызова одноименной утилиты, осуществляющей вывод содержимого текстовых файлов с ограничением длин выводимых строк. Данная утилита может оказаться полезной в том случае, если необходимо вывести текст с помощью терминала. Ее главным недостатком является отсутствие поддержки кодировки UTF-8, что делает ее мало пригодной для вывода текстов на языках, отличных от английского.

Базовый синтаксис команды выглядит следующим образом:

$ fold [параметры] [файл] …

Утилита может принимать пути к одному или нескольким текстовым файлам. Что касается параметров, то параметр -w позволяет задать максимальную длину выводимых строк (по умолчанию длина выводимых строк ограничивается 80 символами), параметр -s позволяет разделять строки по символам пробелов для лучшей читаемости (по умолчанию строки разделяются по любым символам), а параметр -b позволяет задать максимальную длину выводимых строк не в символах, а в байтах, впрочем, в случае использования кодировки ASCII каждый символ будет занимать один байт, поэтому данный параметр не будет иметь какого-либо значения.

Примеры использования

Вывод текста с ограничением длин строк

Для вывода текста с ограничением длин строк достаточно использовать утилиту fold, передав ей имя текстового файла. Длина строк по умолчанию ограничивается 80 символами (это объясняется тем, что стандартный терминал Unix-подобных систем способен выводить 24 текстовых строки длиной в 80 символов каждая).

$ fold fragment.txt
PRIDE AND PREJUDICE
By Jane Austen
Chapter 1
It is a truth universally acknowledged, that a single man in possession of a goo
d fortune, must be in want of a wife.
However little known the feelings or views of such a man may be on his first ent
ering a neighbourhood, this truth is so well fixed in the minds of the surroundi
ng families, that he is considered the rightful property of some one or other of
their daughters.

Строки разделены на фрагменты, длина каждого из которых не превышает 80 символов.

Для изменения максимальной длины строки предназначен параметр -w:

$ fold -w 40 fragment.txt
PRIDE AND PREJUDICE
By Jane Austen
Chapter 1
It is a truth universally acknowledged,
that a single man in possession of a goo
d fortune, must be in want of a wife.
However little known the feelings or vie
ws of such a man may be on his first ent
ering a neighbourhood, this truth is so
well fixed in the minds of the surroundi
ng families, that he is considered the r
ightful property of some one or other of
their daughters.

Теперь максимальная длина строки составляет 40 символов. Для указания количества байтов вместо количества символов может использоваться параметр -b:

$ fold -b -w 40 fragment.txt
PRIDE AND PREJUDICE
By Jane Austen
Chapter 1
It is a truth universally acknowledged,
that a single man in possession of a goo
d fortune, must be in want of a wife.
However little known the feelings or vie
ws of such a man may be on his first ent
ering a neighbourhood, this truth is so
well fixed in the minds of the surroundi
ng families, that he is considered the r
ightful property of some one or other of
their daughters.

Текст на английском языке в кодировке ASCII, поэтому отличий каждый символ занимает один байт и отличий нет.

Для улучшения читаемости текста может использоваться параметр -s.

$ fold -s -w 40 fragment.txt
PRIDE AND PREJUDICE
By Jane Austen
Chapter 1
It is a truth universally acknowledged,
that a single man in possession of a
good fortune, must be in want of a wife.
However little known the feelings or
views of such a man may be on his first
entering a neighbourhood, this truth is
so well fixed in the minds of the
surrounding families, that he is
considered the rightful property of
some one or other of their daughters.

Теперь слова не разделяются на части — благодаря этому текст гораздо проще читать.

Попробуем ради интереса использовать утилиту по отношению к файлу с русскоязычным текстом в кодировке UTF-8.

$ fold fragment-ru.txt
Гордость и предубеждение
Джейн Остин
Глава 1
В целом мире не сыскать безумца, который реш
ился бы оспорить тот факт, что богатый холос
тяк непременно должен находиться в постоян�
�ом поиске спутницы жизни.
Разумеется, бесспорно и то, что такой холост
як вполне может пребывать в полном неведени
и относительно своего счастливого положени
я; однако каждый раз, поселяясь в новом мест�
�, он весьма скоро обнаруживает, что взгляды
отцов соседствующих семейств преисполнены
участливого понимания, а их жены — матери м�
�огочисленных дочерей на выданье — погляды�
�ают на нового члена общества с плохо скрыва
емым чувством собственничества.

Утилита разбивает последовательности символов UTF-8, из-за чего буквы становятся нечитаемыми. Кроме того, длина строк рассчитывается некорректно. Можно попытаться немного исправить ситуацию с помощью параметра -s.

$ fold -s fragment-ru.txt
Гордость и предубеждение
Джейн Остин
Глава 1
В целом мире не сыскать безумца, который
решился бы оспорить тот факт, что богатый
холостяк непременно должен находиться в
постоянном поиске спутницы жизни.
Разумеется, бесспорно и то, что такой
холостяк вполне может пребывать в полном
неведении относительно своего счастливого
положения; однако каждый раз, поселяясь в
новом месте, он весьма скоро обнаруживает,
что взгляды отцов соседствующих семейств
преисполнены участливого понимания, а их
жены — матери многочисленных дочерей на
выданье — поглядывают на нового члена
общества с плохо скрываемым чувством
собственничества.

Символ пробела занимает один байт поэтому проблем с нечитаемыми символами больше нет. Тем не менее, длина все так же будет рассчитываться некорректно и с этим ничего не поделать без доработки кода самой утилиты.