Линейные принтеры (и некоторые печатные терминалы )в первые годы существования Unix были разработаны для печати 66 строк на странице с 80 или 132 столбцами шрифта с фиксированной -шириной в строке на непрерывных бумажных формах. lpr
не отформатировал аргумент стандартного ввода или файла; форматирование должны были выполнять другие программы, такие как pr
или nroff
. (lpr также может отправлять вывод troff
фотонаборщику ).
Чтобы приспособить сгиб между страницами и обеспечить верхнее и нижнее поля, которые предпочитает большинство людей, после каждых 56 строк ввода pr будет вставлять 5 пустых строк, которые будут служить нижним полем, и 4 пустые строки плюс строка заголовка, которые будут служить верхнее поле. Если задана опция -f
, то внизу каждой страницы pr
будет выводить перевод страницы вместо 5 пустых строк. Принтер обычно может обрабатывать перевод страницы, который механически переходит к началу следующей страницы быстрее, чем серия пустых строк. [Есть программа, название которой я забыл, которая форматирует исходный код C и вставляет перевод страницы перед началом каждой функции, так что каждая функция начинается в верхней части новой страницы, когда вы ее распечатываете.]
Линейные принтеры обычно не переносили строки, длина которых превышала ширину страницы, для которой они были предназначены. Но печатающие терминалы и дисплейные терминалы (и эмуляторы терминалов, которые преобладают сегодня ), могут либо переносить, либо не переносить длинные строки, в зависимости от конфигурации. (Точнее, вы можете настроить, что происходит, когда символ печатается в крайнем правом столбце :либо оставить курсор/печатающую головку в этом последнем столбце, либо переместить его в первый столбец следующей строки ). Большинство людей предпочитают запаковывать, чтобы не потерять информацию.
pr
изначально не делал никакого переноса длинных строк; некоторые более новые версии делают, или вы можете использовать программу fmt
в качестве фильтра. pr
, однако, поддерживает настраиваемую длину страницы (параметр -l
), поэтому, если вы используете терминал или принтер, который переносит строки, вы можете предположить меньшую длину страницы, которая приведет к 56 или меньше фактических строк на выводимой странице и скажите pr
использовать это.
Вот что сделал ваш пример; он сказал pr
считать, что страница состоит из 50 строк текста вместо 56. Если вы получите больше или меньше 6 дополнительных строк из-за переноса, вы не хотите, чтобы pr
вставлял свои обычные 5 пустых строк,так как это нарушит выравнивание следующих страниц; вы хотите, чтобы он выводил форму, поэтому они добавили опцию -f
в ваш пример.