pwncollege
DojosLeaderboardCommunity
Back to linux

Управление потоками

linux
0/15 challenges completed

Вы, вероятно, уже заметили, что некоторые команды при запуске выводят данные прямо в Ваш терминал. До сих пор это чаще всего были флаги, но, как и во многих других случаях, стоящая за этим технология устроена куда глубже. Знание механизмов работы с вводом и выводом в командной строке существенно расширяют её возможности.

В данном модуле Вы познакомитесь с перенаправлением ввода и вывода. В каждой программе (процессе) в Linux изначально есть три стандартных канала обмена данными:

  • Стандартный ввод — канал, через который процесс получает данные. Например: Ваша оболочка использует стандартный ввод, чтобы читать команды, которые Вы набираете.
  • Стандартный вывод — канал, через который процессы выдают обычные данные. Например: флаг, который печатается Вам в предыдущих заданиях, или результат работы утилит вроде ls.
  • Стандартный вывод ошибок — канал, через который процессы выводят сведения об ошибках. Например: если Вы опечатаетесь в имени команды, оболочка выведет сообщение о том, что такой команды не существует, именно через стандартный вывод ошибок.

Поскольку эти три канала настолько часто используются в Linux, для них закрепились короткие обозначения: stdin (cтандартный ввод), stdout (cтандартный вывод), stderr (стандартный вывод ошибок).

В этом модуле Вы узнаете, как перенаправлять эти каналы, связывать их между собой, блокировать и вообще по‑разному «колдовать» над ними. Удачи в освоении этого непростого материала!

ПРИМЕЧАНИЕ:

Отличное наглядное руководство по перенаправлению ввода‑вывода в Linux.

1
Перенаправление вывода — Часть 1
2
Перенаправление вывода — Часть 2
3
Режим добавления
4
Перенаправление сообщений об ошибках
5
Перенаправление ввода
6
Поиск в сохранённых результатах (grep)
7
Поиск в потоке вывода (grep)
8
Поиск в сообщениях об ошибках (grep)
9
Фильтрация (grep)
10
Фильтрация (sed)
11
Дублирование данных (tee)
12
Подстановка процессов
13
Запись данных в несколько программ
14
Раздельная передача stderr и stdout
15
Именованные конвейеры (FIFO)