ввода_вывода
Потоки
В системе по-умолчанию всегда открыты три “файла”:
- stdin - стандартный ввод (клавиатура)
- stdout - стандартный вывод (экран)
- stderr - стандартная ошибка (вывод ошибок на экран)
Ко всему прочему, потоки пронумерованы:
- stdin - 0
- stdout - 1
- stderr - 2
Управление потоками
>
- передать в;»
- дописать в;- < - взять из;
- | - отправить следующей команде
Для работы с потоками, часто используют команды
- tee - отправить в файл и на стандартный вывод
- xargs - построчно передать на ввод значение следующей команде.
Example
Самый простецкий пример работы конвейера, выведем все файлы и директории содержащие букву r
ls | grep r error.txt folder result.txt
Удаление найденных файлов
find . -name "*.txt" | xargs rm -f
Перенаправление stderr на stdout. Сообщения об ошибках передаются туда же, куда и стандартный вывод.
cron job command > /dev/null 2>&1
Перенаправление ошибки в файл
ls NoExistFile 2> report.txt cat report.txt ls: cannot access 'NoExistFile': No such file or directory
Перенаправляем ошибки в отдельный файл
ls NoExistFile > report.txt 2> error.txt
Вывод результата на экран и в файл
ls | tee output.txt file1.txt file2.txt file3.txt cat output.txt file1.txt file2.txt file3.txt
ввода_вывода.txt · Last modified: 2023/04/06 10:28 (external edit)