Именованные каналы
Канал также можно создать, подобно файлу или каталогу, и присвоить ему название, для того, чтобы перенаправлять в него вывод нескольких команд. Такие каналы называются именованными каналами или pipes.
Чтобы создать именованный канал используется команда mkfifo либо команда mknod с типом файла p. Например:
mkfifo mypipe1
mknod mypipe2 p
Первая команда создаст в текущем каталоге именованный канал с названием mypipe1, вторая - именованный канал с названием mypipe2.
Попробуем использовать канал mypipe1 для поиска файлов в каталогах /usr/share
и /usr/local/share
файлов и каталогов в названии которых встречается font.
find /usr/share >mypipe1 &
find /usr/local/share >mypipe1 &
cat mypipe1 | grep font | less
Вывод первых двух команд перенаправляется в именованный канал mypipe1. При этом обе команды запускаются на исполнение в фоновом режиме. Это делается с помощью символа & в конце строки.
Третья команда состоит из трёх команд, вывод которых перенаправляется в поток ввода следующей команды:
- Команда
cat mypipe1
выводит содержимое файла, в данном случае это именованный канал mypipe1. - Команда
grep font
выводит только строки, содержащие font. - Команда
less
испольуется для того, чтобы вывод можно было удобно просматривать. Завершение работы команды less - клавиша q.
У именованных каналов есть одно ограничение. Мы можем перенаправить в именованный канал вывод нескольких команд, но лишь одна команда может читать данные из именованного канала.
- Стандартные поток ввода (stdin) и стандартные потоки вывода (stdout) и ошибок (stderr).
- Код завершения выполнения программы.
- Перенаправление вывода команды в файл.
- Перенаправление ввода команды из файла.
- Перенаправление вывода команды на ввод другой команды.
- Перенаправление вывода в никуда.
- Именованные каналы.
- Перенаправление вывода в несколько файлов.
- Перенаправление вывода на другой терминал.
- Вывод содержимого файла.
- Ввод из командной строки в файл.
- Выполнение команд из файла.
- Вывод управляющих символов и символов по кодам.
- Запуск сессии shell с перенаправлением стандартных потоков.
- Замена символов при выводе.
- Построчное объединение файлов.
- Перенос строки в терминале.