Vous recherchez peut-être une pipe nommée .
mkfifo f
{
echo 'V cebqhpr bhgchg.'
sleep 2
echo 'Urer vf zber bhgchg.'
} >f
rot13 < f
L'écriture dans la pipe ne démarre pas le programme d'écoute. Si vous souhaitez traiter l'entrée en boucle, vous devez maintenir un programme d'écoute en cours d'exécution.
while true; do rot13 <f >decoded-output-$(date +%s.%N); done
Notez que toutes les données écrites dans le canal sont fusionnées, même s'il existe plusieurs processus d'écriture. Si plusieurs processus sont en cours de lecture, un seul obtient les données. Un tuyau peut donc ne pas convenir à des situations concurrentes.
Un socket nommé peut gérer des connexions simultanées, mais cela dépasse les capacités des scripts shell de base.
A l'extrémité la plus complexe de l'échelle sont des systèmes de fichiers personnalisés , qui vous permet de concevoir et de monter un système de fichiers où chaque open
, write
etc., déclenche une fonction dans un programme. L'investissement minimum est de dizaines de lignes de codage non trivial, par exemple en Python . Si vous ne souhaitez exécuter des commandes que lors de la lecture de fichiers, vous pouvez utiliser scriptfs ou fuseflt .
Gilles 'SO- arrête d'être méchant'
la source