**103.4** Потоки, конвейеры и перенаправления Студент должен уметь управлять потоками для обработки текстовых данных **Изучаем** : - перенаправление стандартных ввода, вывода и ошибок; - передачу вывода одной команды на ввод другой; - использование вывода одной команды в качестве аргументов другой; - получение выходных данных в файл и на стандартный вывод. **Термины и утилиты: ** - tee - xargs - stdin - stout - stderr Linux традиционно использует потоки для ввода, вывода и ошибок. Обычно ввод – это клавиатура или файлы, а вывод ошибок и результатов происходит в консоль. Но часто бывает нужно объединить последовательность команд в конвейер, или отправить результат в какой-нибудь файл. Для того чтобы послать на ввод программы некоторые данные используется знак " **<**", например: **wc** **<** **file**** 1. ****txt**** ** _(использовать в качестве ввода для программы_ _wc_ _файл_ _file __.__ txt__);_ Для того чтобы послать вывод программы куда-нибудь, кроме стандартного направления, используется знак " **>**", например: **ls** **>** **list****. ****txt** _(перезаписать содержимое файла_ _list __.__ txt_ _результатом команды_ _ls__);_ **ls** **>>** **list****. ****txt** _(дописать в файл_ _list __.__ txt_ _результат команды_ _ls__);_ Для ввода, вывода и ошибок используются следующие обозначения: - **Stdin** _– стандартный ввод программы (обозначение "0");_ - **Stdout** – _стандартный вывод программы (обозначение "1");_ - **Stderr** – _стандартные ошибки программы (обозначение "2");_ Например: **l**** s bob 2> error.txt** **ls**** bob **** > **** result ****.**** txt **** 2> **** error ****.**** txt**