GNU/Linux >> Tutoriels Linux >  >> Linux

Pseudo fichiers pour données temporaires ?

Je souhaite souvent fournir des données de chaîne relativement courtes (peut-être plusieurs lignes cependant) à des programmes en ligne de commande qui n'acceptent que les entrées de fichiers (par exemple wdiff) de manière répétée. Bien sûr, je peux créer un ou plusieurs fichiers temporaires, y enregistrer la chaîne et exécuter la commande avec le nom du fichier en paramètre. Mais il me semble que cette procédure serait très inefficace si des données sont réellement écrites sur le disque et qu'elle pourrait également endommager le disque plus que nécessaire si je répète cette procédure plusieurs fois, par ex. si je veux alimenter des lignes simples de longs fichiers texte vers wdiff. Existe-t-il un moyen recommandé de contourner cela, par exemple en utilisant des pseudo-fichiers tels que des tubes pour stocker temporairement les données sans les écrire réellement sur le disque (ou en les écrivant uniquement si elles dépassent une longueur critique). Notez que wdiff prend deux arguments et, pour autant que je sache, il ne sera pas possible d'alimenter les données en faisant quelque chose comme wdiff <"text" .

Réponse acceptée :

Utilisez un canal nommé. A titre indicatif :

mkfifo fifo
echo -e "hello worldnnext linenline 3" > fifo

Le -e dit à echo d'interpréter correctement l'échappement de nouvelle ligne (n ). Cela bloquera, c'est-à-dire que votre shell se bloquera jusqu'à ce que quelque chose lise les données du tube.

Ouvrez un autre shell quelque part et dans le même répertoire :

cat fifo

Vous lirez l'écho, qui libérera l'autre coquille. Bien que le canal existe en tant que nœud de fichier sur le disque, les données qui le traversent ne le sont pas ; tout se passe dans la mémoire. Vous pouvez fonder (& ) l'écho.

Le tube a un tampon de 64 Ko (sous Linux) et, comme un socket, bloquera le graveur lorsqu'il est plein, vous ne perdrez donc pas de données tant que vous ne tuez pas prématurément le graveur.


Linux
  1. Top 5 des logiciels de sauvegarde de données pour Linux

  2. Script pour surveiller le dossier pour les nouveaux fichiers ?

  3. Définir Umask pour le système de fichiers monté sur Sshfs ?

  4. Un environnement de type shell pour le traitement binaire ?

  5. Cacher des données dans les systèmes de fichiers ?

Liste des bases de données NoSQL pour 2021

Commande ls sous Linux pour lister les fichiers

Comment installer et utiliser Okteta pour les fichiers de données RAW sous Linux

Dropbox configuré pour un serveur cloud Linux

Fichiers .o vs fichiers .a

Utilisation de fichiers pour la mémoire partagée IPC