12. Потоки ввода-вывода, перенаправление ввода-вывода. Программы-фильтры - назначение, особенности, примеры.

Каждая программы, запущенная из shell, получает три открытых потока ввода/вывода, которые по умолчанию ассоциируются с терминалом.

Потоки задаются номерами(дескрипторы):

Большинство утилит Unix используют только стандартные потоки, поэтому для этих утилит можно осуществлять перенаправление.

Виды перенаправления

В UNIX существуют программы, получающие данные из стандартного потока ввода (stdin) и выводящие результаты свое работы в стандартный поток вывода (stdout). Общее название таких программ – программы-фильтры (или просто фильтры). Фильтр обычно (но не всегда) умеет также читать данные из файлов, имена которых были переданы ему в качестве аргументов, причем в этом случае чтение из файлов происходит именно в том порядке, в каком имена файлов были указаны в качестве параметров. Совместно с возможностью перенаправления стандартных потоков (stdin, stdout и stderr), использование программ-фильтров предоставляет пользователю большие возможности по обработке информации в командной строке или скриптах.

Фильтр cat

Программа cat является классическим представителем фильтров. То, что прочитано из stdin или из файлов, выводится в stdout. Несмотря на кажущуюся простоту такого действия, использование cat позволяет пользователю быстро и эффективно решать необходимые задачи. Например, если необходимо просмотреть содержимое файла, нет нужды запускать пейджер или, тем более, редактор:

$ cat /etc/fstab

Device Mountpoint FStype Options Dump Pass#

/dev/ad0s1b none swap sw 0 0 /dev/ad0s1a / ufs rw 1 1 /dev/ad0s1e /tmp ufs rw 2 2 /dev/ad0s1f /usr ufs rw 2 2 /dev/ad0s1d /var ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0

Для добавления строки в конец файла file1:

$ cat » file1 new line