Возможно, вы ищете именованную трубу .
mkfifo f
{
echo 'V cebqhpr bhgchg.'
sleep 2
echo 'Urer vf zber bhgchg.'
} >f
rot13 < f
Запись в канал не запускает программу прослушивания. Если вы хотите обработать ввод в цикле, вы должны поддерживать работающую программу прослушивания.
while true; do rot13 <f >decoded-output-$(date +%s.%N); done
Обратите внимание, что все данные, записанные в канал, объединяются, даже если записывается несколько процессов. Если несколько процессов читают, только один получает данные. Таким образом, труба может не подходить для одновременных ситуаций.
Именованный сокет может обрабатывать параллельные соединения, но это выходит за рамки возможностей базовых сценариев оболочки.
На самом сложном конце шкалы находятся пользовательские файловые системы , которая позволяет проектировать и монтировать файловую систему , где каждый open
, write
и т.д., вызывает функцию в программе. Минимальные вложения составляют десятки строк нетривиального кодирования, например в Python . Если вы хотите выполнять команды только при чтении файлов, вы можете использовать scriptfs или fuseflt .