7.2.2.1. Учебный пример: создание канала к пейджеру
7.2.2.1. Учебный пример: создание канала к пейджеру
Существует множество вариантов использования конвейеров. Например, Unix-утилита ps( 1) выводит на стандартный вывод список процессов, "не заботясь" о том, что верхняя часть длинного листинга может не поместиться на пользовательском дисплее и исчезнет слишком быстро, чтобы пользователь успел ее увидеть. В операционной системе Unix имеется другая программа, тоге(1), которая отображает данные, полученные на стандартный ввод, блоками, размеры которых не превышают размеры экрана, и после отображения каждого блока ожидает нажатия клавиши пользователем.
Таким образом, если пользователь вводит команду "ps | more", передавая вывод утилиты ps( 1) на ввод тоге( 1), на экране последовательно после каждого нажатия клавиши будут отображаться страницы списка процессов.
Подобная возможность комбинировать программы является чрезвычайно полезной. Но действительный выигрыш в данном случае не сводится к изящным комбинациям. Именно благодаря тому, что существуют каналы и программа тоге(1), другие программы могут быть проще. Использование каналов означает, что в таких программах, как ls(1) (и других, записывающих данные в стандартный вывод), не требуется культивировать собственные средства постраничного вывода (пейджеры), а пользователи избавлены от тысяч встроенных пейджеров (каждый из которых, естественно, обладает собственными особенностями применения). Благодаря каналам, предотвращается раздувание кода и сокращается глобальная сложность.
В дополнение к этол*/, если потребуется настроить режим работы пейджера, то это можно сделать в одном месте путем изменения одной программы. Действительно, может существовать множество пейджеров и все они будут полезны для каждого приложения, которое записывает информацию в стандартный вывод.
Фактически дело обстоит именно так. В.современных Unix-системах тоге(1) почти полностью заменена утилитой less( 1), в которой добавлена возможность просматривать страницы отображенного файла не только сверху вниз, но и снизу вверх6. Ввиду того, что less(1) отделена от использующих ее программ, существует возможность просто связать ее псевдонимом с "more" в оболочке, установить значение переменной среды PAGER равным "less" (см. главу 10) и получить все преимущества лучшего пейджера со всеми Unix-программами, написанными соответствующим образом.
Данный текст является ознакомительным фрагментом.