¿Cómo puedo crear un pseudoarchivo que obtenga su contenido de un comando cada vez que se lea?

¿Cómo puedo crear un pseudoarchivo que obtenga su contenido de un comando cada vez que se lea?

Quiero crear algo parecido a un archivo (que pueda leerse como un archivo común), que cada vez que se lee, obtenga su salida de un comando.

Por ejemplo, si lo hago echo $RANDOM > test, puedo llamar cat testy se mostrará el número aleatorio generado.

Excepto que necesitaría que cada vez que llame cat test(o lo lea de otra manera), se llame al comando de mi generador ( echo $RANDOMen mi ejemplo, pero en realidad generará más datos, alrededor de 1 kb).

Creo que la mejor opción sería crear algún tipo de archivo/controlador de dispositivo especial para el dispositivo. De hecho, lo que necesito es similar a /dev/zero o /dev/random. ¿Es posible crearlo de forma sencilla? ¿Usar la biblioteca estándar gnu/sh sería ideal?

¡Gracias de antemano por cualquier pista!

Respuesta1

Utilice la funcionalidad de canalizaciones con nombre:

mkfifo myfancypipe;
while true; do bash -c 'echo $RANDOM' > myfancypipe; done

Ahora ve a otra terminal y cada vez llamarás:

cat myfancypipe

Obtendrás información deecho $RANDOM

información relacionada