Канал также можно создать, подобно файлу или каталогу, и присвоить ему название, для того, чтобы перенаправлять в него вывод нескольких команд. Такие каналы называются именованными каналами или 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.У именованных каналов есть одно ограничение. Мы можем перенаправить в именованный канал вывод нескольких команд, но лишь одна команда может читать данные из именованного канала.