GNU/Linux >> Tutoriales Linux >  >> Linux

¿Crear un archivo virtual que en realidad es un comando?

¿Hay alguna forma de crear un archivo virtual, de modo que la lectura del archivo realmente se lea desde el stdout? de un comando; escribir en el archivo es realmente escribir en el stdin de un comando?

Hasta ahora he hecho esto con un inotifywait en un archivo, que llama a un comando cuando se modifica el archivo, toma su entrada del archivo y la vuelve a escribir.

No me gusta que el inotifywait Sin embargo, debe reiniciarse constantemente (y debo asegurarme de que siempre esté funcionando). Solo uso este archivo quizás dos veces por semana.

Respuesta aceptada:

Puede estar buscando una canalización 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 canalización se fusionan, incluso si hay varios procesos de escritura. Si varios procesos están leyendo, 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 simultáneas, pero esto está más allá de las capacidades de los scripts de shell básicos.

En el extremo más complejo de la escala se encuentran los sistemas de archivos personalizados, que le permiten diseñar y montar un sistema de archivos donde cada 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.


Linux
  1. ¿Cómo estar seguro de que un directorio o archivo se eliminó realmente?

  2. 4 formas de crear un archivo de texto en la terminal de Linux

  3. Use el comando fallocate para crear archivos de tamaño específico en Linux

  4. Comando Linux ln

  5. Cómo crear archivos dispersos en Linux usando el comando 'dd'

Cómo crear un enlace simbólico en Linux usando el comando Ln

Creación de discos virtuales mediante la línea de comandos de Linux

Cómo crear un archivo en Linux usando el comando Cat

Cómo crear un archivo en Linux usando Terminal

Cree un volumen de disco duro virtual (VHD) usando un archivo en Linux

Cómo crear un archivo grande de 1 GB o 10 GB en el sistema Linux