Главная » Программирование для UNIX » Печать файлов: cat и pr

0

Итак, мы  создали несколько файлов. Как  просмотреть их  содержимое?  Есть  много  программ, способных выполнить эту  задачу,  может

быть, даже больше, чем нужно. Одна из возможностей состоит  в том,  чтобы запустить редактор:

$ ed junk

19                                     ed сообщает о том, что в junk 19 символов 1,$p                                  Напечатать строки с первой по последнюю To be or  not  to  be       В файле всего одна строка

q                                       Все сделано

$

Сначала ed выводит количество символов в junk; команда 1,$p сообщает редактору, что надо напечатать все строки этого файла. Изучив ed, вы сможете печатать только необходимые фрагменты, а не целый файл.

Бывают случаи, когда редактор не подходит для печати. Например, существует предельный размер файла (несколько тысяч строк), который ed может обработать. Более  того, он печатает только один файл за раз, а возможны ситуации, когда требуется печать нескольких файлов – одного за другим, без остановок. Итак, есть несколько других вариантов.

Первый вариант –  это  cat,  самая простая из  всех  печатающих программ; она печатает содержимое всех файлов, имена которых указаны в ее аргументах:

$ cat  junk

To be or  not  to  be

$ cat  temp

That  is the  question.

$ cat  junk  temp

To  be  or  not  to  be That  is  the  question.

$

Названные в  аргументах файлы или   файл  выводятся на  терминал вместе  (отсюда  имя  cat  – catenate1  – соединять), один  за другим, без каких-либо разделителей.

С небольшими файлами проблем не возникает, а вот если  файл  большой  и  соединение  с  компьютером высокоскоростное,  то  надо  иметь очень  хорошую реакцию, чтобы  успеть нажать ctl-s  и остановить вывод cat, пока  он еще  не  ускользнул с экрана. Нет  «стандартной» команды, позволяющей выводить файл на видеотерминал порциями, помещающимися на одном  экране, но во многих UNIX-системах такая возможность есть.  В вашей системе такая команда может называться pg или more. Наша называется p; о ней будет рассказано в главе 6.

Как  и cat, команда pr печатает содержимое всех файлов, перечисленных  в списке, но в форме, пригодной для построчнопечатающих устройств: каждая страница содержит 66 строк (11 дюймов в высоту), к

1        Catenate – это редко  употребляемый синоним слова concatenate (связывать, соединять).

которым добавлены дата  и время изменения файла, имя  файла и номер страницы, а также несколько пустых строк на месте сгиба бумаги. Итак, чтобы  аккуратно распечатать junk, потом перейти на начало новой страницы и так же распечатать temp, надо выполнить команду:

$ pr  junk  temp

Sep 26 16:25  1983   junk  Page 1

To be or  not  to  be

(60 more blank lines)

Sep 26 16:26  1983   temp Page 1

That  is the  question.

(60 more blank lines)

$

Программа pr также может осуществлять вывод в несколько колонок:

$ pr  -3  имена5файлов

Каждый файл будет распечатан в 3 колонки. Вместо  «3»  можно написать  любое  разумное число, и pr постарается сделать все наилучшим образом. (На  месте   слов  имена5файлов  должен  быть  введен   список файлов для  печати.) Команда pr  –m выведет каждый файл в отдельном столбце. См. описание pr(1).

Отметим,  что  pr  не  является программой  форматирования текста в том,  что  касается  перегруппировки строк или  выравнивания  краев. Настоящие средства форматирования – это nroff и troff, которые будут описаны в главе 9.

Существуют также  команды, печатающие  файлы на  высокоскоростном  принтере.  Почитайте  в  man   о  командах lp  и  lpr или  найдите статью «printer» в пермутационном указателе.1 Выбор  программы зависит от оборудования, подключенного к компьютеру. Команды pr и lpr часто  используются вместе  – после  того как pr отформатирует информацию  надлежащим образом, lpr запускает механизм  вывода на построчно печатающий принтер. Вернемся к этому чуть позже.

Источник: Керниган Б., Пайк Р., UNIX. Программное окружение. – Пер. с англ. – СПб: Символ-Плюс, 2003. – 416 с., ил.

По теме:

  • Комментарии