Найти в Дзене
Linux_for_god's

Потоки и конвейер в linux системах

terminal
terminal

Стандартные потоки ввода и вывода в 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.

Если вам нравиться такой формат статьи в виде небольших справочников - подписывайтесь и пишите в комментариях о чём сделать следующую статью. Спасибо за прочтение моей статьи.