PG(1) PG(1) НАЗВАНИЕ pg - фильтр для просмотра файлов на экране СИНТАКСИС |pg [-число] [-p пригл] [-c] [-e] [-f] [-n] [-s] [+номер_строки] | [+/шаблон/] [файл ...] ОПИСАНИЕ Команда pg позволяет просматривать файлы страницами, равными по размеру экрану. Если имена файлов не заданы или задан символ -, то просматривается стандартный ввод. После вывода очередной страницы следует приглаше- ние. Если пользователь нажмет клавишу возврата каретки, то будет выведена очередная страница; остальные возмож- ности перечислены ниже. Эта команда отличается от других команд страничного просмотра тем, что позволяет возвращаться по тексту на- зад. Как это делается - описано ниже. Для определения характеристик терминала команда pg просматривает базу данных terminfo(4) для типа термина- ла, заданного переменной окружения TERM. Если перемен- ная TERM не определена, предполагается, что тип терми- нала - dumb. Опции команды: -число Целое число, задающее размер (в строках) страницы, которое следует использовать вместо значения по умолчанию. (На терминале, содержащем 24 строки, подразумеваемый размер страницы равен 23.) -p пригл Изменение текста приглашения на пригл. Если строка приглашения содержит %d, то при выводе первая пара символов %d будет заменена номером текущей страни цы. Строка приглашения по умолчанию состоит из единственного символа :. -c Возврат курсора в начало и очистка экрана перед выводом каждой страницы. Эта опция игнорируется, если для данного типа терминала в базе данных terminfo(4) не определена операция очистки экрана clear_screen. -e Исключение пауз при переходе к следующему файлу. -f Обычно команда pg расщепляет строку, если она не помещается на экране, однако расщепление некоторых последовательностей символов отображаемого текста (например, управляющих последовательностей, служа- щих для подчеркивания) дает нежелательный эффект. Опция -f подавляет расщепление строк. -n Обычно ввод команды с клавиатуры завершается нажа- тием клавиши перевода строки. Эта опция вызывает автоматический ввод команды, как только будет вве- дена командная буква. -s Отображение всех сообщений и приглашений особым образом (обычно в негативе). +номер_строки Указание номера_строки, с которого следует начи- нать просмотр. +/шаблон/ Указание шаблона для поиска строки, с которой на- чинается просмотр. Команды, допустимые когда pg делает паузу между страни- цами, можно разделить на три группы: команды продолже- ния просмотра, поиска и изменения режима просмотра. Перед командами продолжения просмотра может задаваться адрес - число, возможно со знаком, показывающее, с ка- кого места файла продолжать просмотр. Этот адрес, в за- висимости от команды, интерпретируется в единицах либо страниц, либо строк. Адрес со знаком задает точку отно сительно текущей страницы или строки, а адрес без знака - относительно начала файла. Для каждой команды сущест вует адрес по умолчанию, который используется при от- сутствии явного задания. Команды продолжения просмотра и значения их аргументов по умолчанию: (+1)перевод_строки Вывод на экран очередной страницы. Адрес задается в страницах. (+1)l Если задан относительный адрес, моделируется дви жение по файлу на заданное количество строк. Если задан абсолютный адрес, экран заполняется начиная с указанной строки. (+1)d или CTRL+D Перемещение на пол-экрана вперед или назад. Следующие команды адреса не требуют. . или CTRL+L Повторный вывод текущей страницы текста. $ Вывод последней полной страницы файла. Необходимо соблюдать осторожность, если ввод выполняется че рез канал. Перейдем к командам, предназначенным для поиска по шаб- лонам. Можно использовать регулярные выражения, описан- ные в команде ed(1). Они должны обязательно заканчи- ваться символом перевода строки, даже если задана опция -n. i/шаблон/ Поиск вперед до i-го (по умолчанию i = 1) появле ния шаблона. Поиск начинается сразу после текущей страницы и продолжается до конца файла, без пере- хода в начало. |i^шаблон^ |i?шаблон? Поиск назад до i-го (по умолчанию i = 1) появления шаблона. Поиск начинается сразу перед текущей страницей и продолжается до начала файла, без пе- рехода в конец. Обозначение ^ предусмотрено для терминалов Adds 100, которые некорректно манипули- руют символом ?. Обычно найденная строка оказывается вверху экрана. До бавление символов m или b к команде поиска приведет к тому, что найденная строка окажется в центре или внизу экрана. Для восстановления исходной ситуации можно ис пользовать суффикс t. Пользователь команды pg может модифицировать режим просмотра следующими командами: in Начать работу с i-м следующим файлом командной строки; i - число без знака, по умолчанию 1. ip Начать работу с i-м предыдущим файлом командной строки; i - число без знака, по умолчанию 1. iw Продвинуться по файлу на размер окна. Если i зада- но, то размер окна устанавливается равным i. s файл Сохранить входную информацию в заданном файле. Сохраняется только текущий просматриваемый файл. Пробел между s и файлом необязателен. Эта команда должна заканчиваться символом перевода строки, да- же если задана опция -n. h Вывести справку о доступных командах. q или Q Закончить просмотр файлов. !команда Команда передается интерпретатору, имя которого представляет собой значение переменной окружения SHELL. Если она недоступна, то выбирается интерп- ретатор по умолчанию. Эта команда должна всегда заканчиваться символом перевода строки, даже если задана опция -n. В процессе вывода на терминал пользователь может в лю- бой момент нажать клавиши завершения или прерывания [см. stty(1)]. В результате этого вывод будет прекращен и появится приглашение. После этого пользователь может ввести одну из вышеперечисленных команд обычным обра- зом. К сожалению, при этом теряется часть текста, т.к символы, находящиеся в выходной очереди к терминалу, при появлении сигнала завершения пропадают. Если стан- дартный вывод назначен не на терминал, то команда pg действует точно так же, как cat(1), за исключением то- го, что заголовок выводится перед каждым файлом (если их несколько). ПРИМЕР Примером использования команды pg может служить чтение новостей: |news | pg -p "(Page %d):" ФАЙЛЫ /usr/lib/terminfo/* База данных с информацией о терминалах. /tmp/pg* Временный файл при вводе из ка- нала. СМ. ТАКЖЕ ed(1), grep(1). terminfo(4) в Справочнике программиста. СЮРПРИЗЫ Если позиции табуляции установлены не через восемь возможны нежелательные эффекты. При использовании команды pg в качестве фильтра в соче тании с другой командой, которая изменяет опции ввода/ вывода терминала, терминал может быть не восстановлен в исходное состояние. При ожидании ввода с терминала команда pg воспринимает символы завершения и прерывания как сигнал к заверше- нию. Однако, в момент активной работы эти сигналы ин- терпретируются как приказ перейти в режим приглашения. Ими следует пользоваться с осторожностью, если ввод осуществляется из канала, так как прерывание, скорее всего, приведет к завершению остальных команд конвей- ера.