Quiero leer todo el archivo y hacer que espere la entrada, al igual que tail -f
con el archivo completo mostrado.
La longitud de este archivo siempre cambiará, porque este es un .log
archivo.
¿Cómo puedo hacerlo si no conozco la longitud del archivo?
command-line
tail
gusano
fuente
fuente
less
tiene la tecla "F". Útil si necesitas interacción.Respuestas:
tail
le permite agregar-n
para especificar el número de líneas que se mostrarán desde el final, que se pueden usar junto con-f
. Si el argumento para-n
comenzar con+
eso es el recuento de líneas desde el principio (0
y1
mostrar todo el archivo,2
indicando omitir la primera línea, como lo indica @Ben). Entonces solo hazlo:Si los archivos de registro girará, se puede añadir
--retry
(o combinar-f and --retry
en-F
como se sugiere @Hagen)También tenga en cuenta que en una terminal gráfica, puede usar el mouse y PageUp/ PageDownpara volver al historial (suponiendo que su búfer sea lo suficientemente grande), esta información permanece allí incluso si usa Ctrl+ Cpara salir
tail
. Si usaless
esto, es mucho menos conveniente y AFAIK tiene que usar el teclado para desplazarse y no conozco un medio para evitar laless
desinicialización de termcap si olvida comenzar-X
.fuente
+
) se implemente de manera más eficiente.+1
por enseñarme acerca+0
. Es posible que desee en-F
lugar de-f
rotar archivos de registrotail -n +1
me muestra el comienzo del archivo ytail -n +2
omite una línea. Creo que el número es el número de línea de la primera línea mostrada.Hay una manera mejor de lograr esto:
Le mostrará todo el archivo, tiene todo el poder
less
y esperará una nueva entrada. Si desea dejar de esperar la entrada y leer una parte específica, puede detenerla^C
y continuar conF
.El
F
comando siempre está disponible enless
, si decide observar los cambios mientras tiene un archivo abiertoless
, al presionar seF
activará. Gracias a hiergiltdiestfu y wildcard por señalar eso.fuente
tail
. Gracias por el consejo; Nunca hubiera pensado usarloless
para esto. Nota para otros: también puede simplemente ejecutarless <file>
y luego escribirF
.Además de la respuesta de / u / Anthon, puede hacer algo como:
Esa
-0
opción de cola es equivalente a-n 0
, es decir: muestra 0 líneas. Pero el-f
mostrará nuevas líneas.No necesitas los frenos
{ }
. Los usé porque a veces quieres redirigir los descriptores de archivos de alguna manera. Por ejemplo:Notado por Ben Milwood: podría tener una condición de carrera donde el archivo crece entre el final de la
cat
operación y el comienzo detail
operación. Pero, de nuevo, este es un problema "académico" para una solución académica.fuente
cat
termina ytail
comienza, no verá esas líneas. Es poco probable que sea un gran problema, pero es una razón para preferir latail
solución pura .{ cat; tail -n +0 -f; } < file
que solucionaría la carrera, porque tail imprimirá cualquier dato nuevo que aparezca entrecat
la salida ytail
el inicio. Por supuesto, hace que seacat
redundante. La redirección solo ocurre una vez, ytail
el stdin es el descriptor de archivo quecat
ya se lee en EOF, por lo que su posición actual es donde secat
detuvo. Puede probarlo poniendoecho foo >> file
dentro de la{}
, para crear la carrera cada vez.watch
el comando debería hacer eso por ti.También puedes probar
Tendrás más opciones con el
less
comando para desplazarte por tu archivo mientras dices que es un archivo grande.fuente
+F
opción