Quiero generar el contenido de un archivo mientras cambian, por ejemplo, si tengo el archivo foobary lo hago:
magic_command foobar
El terminal actual debe mostrar el contenido del archivo y esperar hasta que, no sé, presione ^ C.
Entonces si desde otra terminal hago:
echo asdf >> foobar
El primer terminal debería mostrar la línea recién agregada además del contenido del archivo original (por supuesto, dado que no presioné ^ C).
Marcaré esto como tarea ya que quiero explorar y aprender Linux, pero no es tarea, es solo una curiosidad mía.

Respuestas:
Puedes usar
tail commandcon-f:Es una buena solución para espectáculos en tiempo real.
fuente
-F(mayúscula f), que volverá a abrir el archivo si se elimina y se vuelve a crear en el camino.Si desea mostrar un archivo corto, que cabe en una pantalla de terminal, y lo que está cambiando es posiblemente todo el archivo, puede usar
watch:watch cat example.txtMuestra todo el archivo cada 2 segundos de forma predeterminada, incluido un encabezado opcional:
La opción
-d(--differences) resaltará los cambios de la versión anterior de la salida, o de la primera versión.fuente
Cuando necesito detectar cambios en el archivo y hacer algo diferente a lo
tail -f filenameque hago, lo he usadoinotifywaiten un script para detectar el cambio y actuar en consecuencia. Un ejemplo de uso se muestra a continuación. Consulteman inotifywaitpara otros nombres de eventos e interruptores. Es posible que deba instalar elinotify-toolspaquete, por ejemplo a través desudo apt-get install inotify-tools.Aquí está el script de ejemplo, llamado
exec-on-change:En dos consolas ingresé los comandos de la siguiente manera (donde A> significa entrada en la consola A y B> significa entrada en la consola B.)
El siguiente resultado de
cat tapareció en la consola A:La siguiente salida de
exec-on-changeapareció en la consola B:El
exec-on-changeguión terminado cuando merm'dt.fuente
lesstiene un modo de seguimiento similar atail -f: simplemente presionaFcuando lo tengas abierto.fuente
Tengo tres soluciones:
1)
tail -fes una buena idea2) también tenemos
tailfque usar3) el tercero es un script bash:
fuente