GNU/Linux >> Tutoriels Linux >  >> Linux

Créer un fichier virtuel qui est en fait une commande ?

Existe-t-il un moyen de créer un fichier virtuel, de sorte que la lecture à partir du fichier lit réellement à partir de stdout d'une commande ; écrire dans le fichier écrit en fait dans le stdin d'une commande ?

Jusqu'à présent, j'ai gâché cela avec un inotifywait sur un fichier, qui appelle une commande lorsque le fichier est modifié, prenant son entrée du fichier et y réécrivant.

Je n'aime pas que le inotifywait doit être constamment redémarré (et je dois m'assurer qu'il est toujours en cours d'exécution). Je n'utilise ce fichier que deux fois par semaine.

Réponse acceptée :

Vous recherchez peut-être un tube nommé.

mkfifo f
{
  echo 'V cebqhpr bhgchg.'
  sleep 2
  echo 'Urer vf zber bhgchg.'
} >f
rot13 < f

L'écriture dans le tube 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 tube 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. Ainsi, un canal peut ne pas convenir à des situations simultanées.

Un socket nommé peut gérer des connexions simultanées, mais cela dépasse les capacités des scripts shell de base.

À l'extrémité la plus complexe de l'échelle se trouvent les systèmes de fichiers personnalisés, qui vous permettent 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 souhaitez uniquement exécuter des commandes lors de la lecture de fichiers, vous pouvez utiliser scriptfs ou fuseflt.


Linux
  1. 8 commandes effrayantes qui hantent le terminal

  2. 4 façons de créer un fichier texte dans un terminal Linux

  3. Commande Linux ln

  4. Créer des fichiers en utilisant la ligne de commande sous Linux

  5. Comment créer des fichiers fragmentés sous Linux à l'aide de la commande "dd"

Comment créer un lien symbolique sous Linux à l'aide de la commande Ln

Création de disques virtuels à l'aide de la ligne de commande Linux

Comment créer un fichier sous Linux à l'aide de la commande Cat

Comment créer un fichier sous Linux à l'aide de Terminal

Créer un volume de disque dur virtuel (VHD) à l'aide d'un fichier sous Linux

Comment créer un gros fichier de 1 Go ou 10 Go dans le système Linux