Quizás estés buscando una tubería con nombre .
mkfifo f
{
echo 'V cebqhpr bhgchg.'
sleep 2
echo 'Urer vf zber bhgchg.'
} >f
rot13 < f
Escribir en la tubería no inicia el programa de escucha. Si desea procesar la entrada en un bucle, debe mantener un programa de escucha en ejecución.
while true; do rot13 <f >decoded-output-$(date +%s.%N); done
Tenga en cuenta que todos los datos escritos en la tubería se fusionan, incluso si hay múltiples procesos de escritura. Si se leen múltiples procesos, solo uno obtiene los datos. Por lo tanto, una tubería puede no ser adecuada para situaciones concurrentes.
Un socket con nombre puede manejar conexiones concurrentes, pero esto está más allá de las capacidades de los scripts de shell básicos.
En el extremo más compleja de la escala están los sistemas de archivos personalizados , que permite diseñar y montar un sistema de ficheros donde cada uno open
, write
etc., desencadena una función en un programa. La inversión mínima es de decenas de líneas de codificación no trivial, por ejemplo en Python . Si solo desea ejecutar comandos al leer archivos, puede usar scriptfs o fuseflt .