Estoy usando tail -f a.txt
para ver actualizaciones en un archivo llamado a.txt
.
Si actualizo el archivo usando algo como ls -a >> a.txt
en una segunda consola virtual, los cambios se mostrarán en tiempo real en la primera.
Si puedo actualizar el archivo con Vim en una segunda consola virtual, los cambios no se mostrarán en la primera.
Yo no necesariamente esperaba que desencadenan una actualización en esa ventana - pero ¿por qué no lo hace exactamente esta actualización del terminal que ejecuta el tail -f
comando?
tail -f
cheques para APPENDs.tail -F
comprueba si hay cambios de nombre de archivo.Respuestas:
Si edita un archivo con
vim
, normalmente lee el archivo en la memoria y luego escribe un nuevo archivo. Asítail
que ahora está operando en una copia desactualizada del archivo (que permanece en el sistema de archivos hasta quetail
(y cualquier otro programa) deja de usarlo).Puede hacer que
tail
siga el nombre del archivo (en lugar del archivo) usando:Tenga en cuenta la mayúscula
F
.fuente
tail -F
¡trabajos! La consola muestra ahora un mensaje como "ha sido reemplazado a.txt: siguiendo final del nuevo archivo" y cambios en consecuencia. ¡Gracias!Tengo entendido que, por lo general, cuando edita con
vim
, está editando una copia del archivo, que se coloca en su lugar cuando escribe los cambios en el disco. Dado que esto sucede al colocarunlink
el original ymove
colocar el nuevo en su lugar,tail
no ve nuevos cambios en el archivo original.fuente