5.3. Перенаправление вывода. Понятие stdin, stdout, stderr. Каналы. Операторы | и <, >, >>.


5.3.  Перенаправление вывода. Понятие stdin, stdout, stderr. Каналы. Операторы | и <, >, >>.


Во многих случаях при работе с файлами нам необходимо будет использовать вывод команды. Решением проблемы перенаправления вывода занимаются командные оболочки, которые мы будем рассматривать позже.

В работе с коммандной строкой Linux есть понятия стандартных устройств ввода, вывода и вывода ошибок.

stdin – стандартное устройство ввода. Имеет файловый указатель №0.  

           Автоматически открывается всеми процессами.

stdout – стандартное устройство вывода. Имеет файловый указатель №1.  

             Автоматически открывается всеми процессами.

stderr – стандартный поток ошибок (специальное устройство вывода для

             сообщений об ошибках. Имеет файловый указатель №2.  

             Автоматически открывается всеми процессами.

По умолчанию практически все команды Linux используют для ввода информации stdin, а для вывода stdout и stderr, если им параметрами не указано обратное.

Операторы перенаправления способны изменять направление вывода и ввода информации. Так оператор:

> - перенаправляет стандартный поток в файл (другой поток). При этом

    если файл существует, то он перезаписывается, если не существует –

    создается.

>> - перенаправляет стандартный поток в файл. При этом если файл

      существует, то информация добавляется в конец, если не существует

      – файл создается.

< - перенаправляет содержимое указанного файла на стандартный ввод

    программе.

>& - перенаправляет стандартные потоки вывода и ошибок друг в друга.


Рисунок 38.


Рисунок 39.


Рисунок 40.


Рисунок 41.


Такой способ перенаправления вывода подходит при работе с файлами. Если вывод какой-либо программы необходимо перенаправить на вход другой? Для этого в Linux существует такое понятие как каналы.

Канал – программный интерфейс, позволяющий процессам обмениваться данными (односторонний поток).

Организацией канала занимается shell. Для управления каналом существует оператор “|”. Пример:


Рисунок 42.


Рассмотрим поподробнее все, что произошло при выполнении данной нами группы команд:

       Команда   cat прочитала файл lesson7_1.txt и передала его содержание на стандартный ввод команды tail

       Команда tail исходя из заданных ей параметров взяла 3 последние строки текстового файла и передала их на стандартный ввод команде less

       Команда less вывела информацию со стандартного ввода на экран и стала ожидать действий пользователя.

Таким образом одна команда передавала по каналу  информацию другой команде.



Петродворец

2017