Стандартные потоки ввода и вывода в linux являются одним из наиболее распространенных средств для обмена информацией процессов, а перенаправление >, >> и | является одной из самых популярных конструкций командного интерпретатора bash.
Для справки:
stdin - поток ввода (имеет индекс 0)
stdout - поток вывода (индекс 1)
stderr - поток вывода ошибок (индекс 2)
Практическое использование:
cat > file.txt
Вводит выходные данные команды cat в файл file.txt. При этом если такого файла не существует, то он будет создан, если есть - перезаписан.
cat >> file.txt
Вводит выходные данные команды cat в файл file.txt. При этом если такого файла не существует, то он будет создан, если есть - данные будут добавлены в конец файла.
< file.txt
Использовать файл file.txt как источник данных для вывода.
2> file.txt
Направить поток ошибок в файл file.txt. При этом если такого файла не существует, то он будет создан, если есть - перезаписан.
2>> file.txt
Направить поток ошибок в файл file.txt. При этом если такого файла не существует, то он будет создан, если есть - данные будут добавлены в конец файла.
&> file.txt
Направить поток ввода и ошибок в файл file.txt.
Конвейер:
Конвейер или канал в linux перенаправляет вывод одной команды в ввод другой, при этом не показывая промежуточный результат выполнения команды, а сразу показывает в терминале отфильтрованный вывод.
Практическое использование:
ls | find "log" >> loglist
Часто канал используют для фильтрации, вместе с grep. Например так:
ps aux | grep firefox
Выводит процессы firefox.
Если вам нравиться такой формат статьи в виде небольших справочников - подписывайтесь и пишите в комментариях о чём сделать следующую статью. Спасибо за прочтение моей статьи.