Você pode estar procurando um canal nomeado .
mkfifo f
{
echo 'V cebqhpr bhgchg.'
sleep 2
echo 'Urer vf zber bhgchg.'
} >f
rot13 < f
Escrever no pipe não inicia o programa de audição. Se você quiser processar a entrada em um loop, você precisa manter um programa de escuta em execução.
while true; do rot13 <f >decoded-output-$(date +%s.%N); done
Observe que todos os dados gravados no pipe são mesclados, mesmo se houver vários processos sendo gravados. Se vários processos estiverem sendo lidos, apenas um obterá os dados. Portanto, um pipe pode não ser adequado para situações simultâneas.
Um soquete nomeado pode manipular conexões simultâneas, mas isso está além dos recursos para scripts básicos de shell.
Na extremidade mais complexa da escala estão os sistemas de arquivos personalizados , que permitem projetar e montar um sistema de arquivos em que cada open
, write
, etc., aciona uma função em um programa. O investimento mínimo é de dezenas de linhas de código não trivial, por exemplo, em Python . Se você quiser apenas executar comandos ao ler arquivos, poderá usar scriptfs ou fuseflt .