Ctrl-Q является действительно ответом. Я думал, что брошу в небольшой истории этого, которое слишком длинно для помещений в поля корректного ответа ak2.
Назад в средневековье, терминал был большим элементом оборудования, который соединился с удаленным устройством (первоначально другой терминал, потому что телетайпы было настолько легче учиться работать, чем телеграфный ключ) по длинному проводу или через телефонные линии с модемами. К тому времени, когда Unix разрабатывал, код ASCII был уже хорошо установлен (хотя конкурирующий код EBCDIC от IBM был все еще силой, с которой будут считаться).
Самые ранние терминалы вели печатный учет каждого полученного символа. Пока символы прибыли не быстрее, чем печатающая головка могла ввести их, по крайней мере. Но как только основанные на CRT терминалы были возможны, проблема возникла, которому только приблизительно 25 строк соответствуют на CRT, и 25 строк 80 символов представили достаточно RAM, что никакая мысль серьезно об обеспечении большего количества RAM для символов, которые прокрутили от вершины экрана.
Таким образом, некоторая конвенция была необходима, чтобы сигнализировать, что передающий конец должен приостановиться, чтобы позволить читателю нагнать.
7-разрядный код ASCII имеет 33 кодовых точки, посвященные управляющим символам (от 0 до 31 и 127). Некоторые из тех действительно хорошо установили цели, такой как NUL
(начальный участок магнитной ленты чистого листа для поточной обработки, разрывов и соединений встык), DEL
("вычеркнутые" символы на перфоленте, обозначенной путем перфорации всех семи дыр), BEL
(звените!), CR
, LF
, и TAB
. Но четыре были определены явно для управления самим оконечным устройством (DC1
кому: DC4
иначе Ctrl+Q, Ctrl+R, Ctrl+S и Ctrl+T).
Мое лучшее предположение - то, что некоторый инженер думал, что (как мнемоника идут), "S" для "Остановки" и "Q" для "Продолжаются", не были слишком плохи, и присвоился DC3
для значения, "прекратите отправлять" и DC1
для значения "хорошо продолжите отправлять теперь".
Даже та конвенция была уже хорошо установлена к тому времени, когда Unix оставлял вложенное множество в Bell Labs для выхода в мир.
Конвенция известна как программное управление потоком и чрезвычайно распространена в реальных последовательных устройствах. Не легко реализовать правильно, поскольку это предотвращает использование любого из тех символов для любой другой цели в канале передачи, и Стоповый сигнал должен быть обработан перед полученными символами любого ожидания, чтобы не отправлять больше, чем принимающий конец может обработать.
Если практично, использование дополнительных сигналов из полосы от потока последовательных данных для управления потоком значительно предпочтено. На непосредственно проводных соединениях, которые могут позволить себе дополнительные сигнальные провода, Вы найдете аппаратное квитирование используемым, который освобождает те символы для другого использования.
Конечно, сегодняшнее окно терминала не использует фактический физический последовательный порт, имеет полосы прокрутки и действительно не нуждается в программном квитировании вообще. Но конвенция сохраняется.
Я вспоминаю заявление, что Richard Stallman получил жалобы на свое отображение Ctrl+S к возрастающему поиску в первых выпусках emacs, и что он был довольно неприятен любому пользователю, который должен был зависеть от управляемого соединения потока 7-разрядного, программного обеспечения.
Вы ищете
fold -w 80 -s text.txt
Это - стандартный путь, но существуют другие системы, которым нужен "-c" вместо "-w".
В дополнение к fold
, смотрите на fmt
. fmt
попытки выбрать разрывы строки разумно, чтобы заставить текст выглядеть хорошим. Это не нарушает длинные обещания, скорее это переносится только пробелами. Это также присоединится к смежным строкам, который хорош для прозы, но плохо для файлов журнала или другого форматированного текста.
И для большего количества параметров форматирования, посмотрите на par
- http://www.nicemice.net/par/
Другой (менее известный) инструмент, который делает то, что Вы хотите, wrap
от GNU Talkfilters:
wrap -w 80 < textfile
Также (вне темы):
но это помещает много пространства на вершине и нижней части печатных строк
добавить -t
при вызове pr
опустить заголовки/трейлеры:
-t, --omit-header
omit page headers and trailers
fold -w 100 -s text.txt
Работал для меня, так как мне нужно разделить каждую строку до 100 символов
1) гарантированная фиксированная ширина строки с разбиением слов:
fold -w 80 <text.txt
2) гарантированная фиксированная ширина строки с чрезвычайным разбиением слов (слово разбивается только если оно слишком велико, чтобы поместиться в строке):
fold -sw 80 <text.txt
3) перспективная фиксированная ширина строки без разбиения слов (если слово слишком велико, чтобы поместиться в строке, оно остается как есть, так что в итоге некоторые строки могут быть больше по размеру, чем нужно):
fmt -w 80 <text.txt
fold -s -w 80 email.txt | sed 's/^.*$/> &/'
– Marcello Romani 10.02.2015, 23:10fold
URL повреждений, в то время какfmt
не делает. спасибо – Skippy le Grand Gourou 28.03.2017, 14:05