| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| komandnaja_stroka._potoki_programmnye_kanaly_i_perenapravlenija [2016/07/11 18:42] – daniil | komandnaja_stroka._potoki_programmnye_kanaly_i_perenapravlenija [Дата неизвестна] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1 |
|---|
| |
| ===== Стандартные потоки ввода / вывода ===== | ===== Стандартные потоки ввода / вывода ===== |
| | |
| | **Стандартные потоки** — воображаемые файлы, позволяющие осуществлять взаимодействие с пользователем как чтение и запись в файл. Кроме потоков ввода и вывода, существует еще и стандартный поток ошибок, на который выводятся все сообщения об ошибках и те информативные сообщения о ходе работы программы, которые не могут быть выведены в стандартный поток вывода. |
| |
| ^ Дескриптор ^ Название ^ Описание ^ | ^ Дескриптор ^ Название ^ Описание ^ |
| ^ Команда ^ Описание ^ | ^ Команда ^ Описание ^ |
| | <wrap em>%%<%%</wrap> //файл// | Использовать файл как источник данных для стандартного потока ввода. | | | <wrap em>%%<%%</wrap> //файл// | Использовать файл как источник данных для стандартного потока ввода. | |
| | %%> файл%% | Направить стандартный поток вывода в файл. Если файл не существует, он будет создан; если существует — перезаписан сверху. | | | <wrap em>%%>%%</wrap> //файл// | Направить стандартный поток вывода в файл. Если файл не существует, он будет создан; если существует — перезаписан сверху. | |
| | %%2> файл%% | Направить стандартный поток ошибок в файл. Если файл не существует, он будет создан; если существует — перезаписан сверху. | | | <wrap em>%%2>%%</wrap> //файл// | Направить стандартный поток ошибок в файл. Если файл не существует, он будет создан; если существует — перезаписан сверху. | |
| | %%>>файл%% | Направить стандартный поток вывода в файл. Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец. | | | <wrap em>%%>>%%</wrap> //файл// | Направить стандартный поток вывода в файл. Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец. | |
| | %%2>>файл%% | Направить стандартный поток ошибок в файл. Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец. | | | <wrap em>%%2>>%%</wrap> //файл// | Направить стандартный поток ошибок в файл. Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец. | |
| | %%&>файл или >&файл%% | Направить стандартный поток вывода и стандартный поток ошибок в файл. Другая форма записи: >файл 2>&1. | | | <wrap em>%%&>%%</wrap> //файл или// <wrap em>%%>&%%</wrap> //файл// | Направить стандартный поток вывода и стандартный поток ошибок в файл. Другая форма записи: >файл 2>&1. | |
| | %%>&-%% | Закрыть поток вывода перед вызовом команды (спасибо [1]); | | | <wrap em>%%>&-%%</wrap> | Закрыть поток вывода перед вызовом команды; | |
| | %%2>&-%% | Закрыть поток ошибок перед вызовом команды (спасибо [2]); | | | <wrap em>%%2>&-%%</wrap> | Закрыть поток ошибок перед вызовом команды; | |
| | %%cat <<EOF%% | Весь текст между блоками EOF (в общем случае вместо EOF можно использовать любое слово) будет выведен на экран. Важно: перед последним EOF не должно быть пробелов! (heredoc синтаксис). | | | cat <wrap em>%%<<EOF%%</wrap> | Весь текст между блоками EOF (в общем случае вместо EOF можно использовать любое слово) будет выведен на экран. Важно: перед последним EOF не должно быть пробелов! (heredoc синтаксис). | |
| | |
| | ---- |
| | |
| | ===== Каналы ===== |
| | |
| | Стандартные потоки можно перенаправлять не только в файлы, но и на вход других программ. Если поток вывода одной программы соединить с потоком ввода другой программы, получится конструкция, называемая **каналом**, **конвейером** или **пайпом** (от англ. pipe, труба). \\ |
| | В bash канал выглядит как последовательность команд, отделенных друг от друга символом <wrap em>|</wrap>: |
| | <code bash> |
| | команда1 | команда2 | команда3 ... |
| | </code> |