Você pode estar procurando um pipe nomeado .
mkfifo f
{
echo 'V cebqhpr bhgchg.'
sleep 2
echo 'Urer vf zber bhgchg.'
} >f
rot13 < f
Escrever no canal não inicia o programa de audição. Se você deseja processar a entrada em um loop, é necessário 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 canal são mesclados, mesmo se houver vários processos gravados. Se vários processos estiverem sendo lidos, apenas um obtém os dados. Portanto, um tubo 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 shell básicos.
No final mais complexo da escala estão os sistemas de arquivos personalizados , que permite desenhar e montar um sistema de arquivos onde cada open
, write
etc., desencadeia uma função em um programa. O investimento mínimo é de dezenas de linhas de codificação não trivial, por exemplo, em Python . Se você deseja executar apenas comandos ao ler arquivos, pode usar scriptfs ou fuseflt .
Gilles 'SO- parar de ser mau'
fonte