Necesito ver archivos de registros grandes usando un shell bash. Estaba usando less
para abrir los archivos, pero como las líneas son demasiado largas, hay algún tipo de ajuste de línea / palabra.
Como los archivos son registros de Log4J, y hay un patrón al comienzo de cada línea, tener líneas ajustadas hace que sea difícil analizar la salida, así que comencé a usar less -S
qué líneas largas.
Pero ahora necesito usar tail -f
, y también la línea envuelve la salida. ¿Es posible deshabilitar el ajuste de línea en un shell bash para todos los comandos?
Nota: hay una respuesta a una pregunta diferente que menciona la secuencia de escape echo -ne '\e[?7l'
, pero parece que no funciona en bash.
screen
, hay un comando de "ajuste". Enxterm
, hay una-aw
opción para evitar ajustes de línea automáticos. Probablemente hay algunos recursos X para otros emuladores de terminal. ¿Qué emulador estás usando?gnome-terminal
.+aw
paraxterm
:) Pero, esto resuelve el problema de la salida (por ejemplo,ls -l
con un montón de nombres largos de Windows de TPB, funciona bien), para la entrada , al ingresar un comando, probablemente todavía desea envolver (o, al menos, no lo quiere como está ahora+aw
: intente escribir más allá del "borde de la columna" y luego retroceda para un gran error GFX).urxvt
nirxvt
puede ni puede deshabilitar los ajustes de línea.Respuestas:
¿Realmente necesitas
tail -f
o quieres hacer algoless +F
? Como parece que todavía quieres un localizador interactivo, me parece que sería mucho más fácil seguirloless
que reimplementarlo tú mismo.Una nota final: ¿has considerado
tail -f file | less
?fuente
screen
yxterm
como esos emuladores tienen opciones para evitar cambios de línea. Pero hay una gran diferencia entre truncar la línea y ocultar la cola de la línea para que podamos verla si queremos. El usotail -f file | less -S
no es perfecto ya que parece deshabilitarlo,-f
pero es la mejor solución que encontré.less
directamente.Tratar:
less -S +F filename
fuente
less -S
. También muy útil en la computadora portátil.Encontré una buena respuesta del superusuario , que funciona de forma inmediata para
gnome-terminal
, y probablemente también para otros terminales:fuente
Suponiendo que tiene la
COLUMNS
variable definida, puede ejecutarde lo contrario, sustitúyalo
$COLUMNS
por el ancho de las columnas del terminal, tal como se obtiene constty -a
.fuente
$COLUMNS
(no se actualiza de inmediatoSIGWINCH
, solo en el siguiente mensaje) ystty -a
(más difícil de usar en el script) estput cols
.cut
comporte comoless -S
donde la línea larga está almacenada y podemos ver la línea completa usando las teclas direccionales?screen
ventanas separadas , cada una con unatail -f | cut
o una secuencia de comandos que emula de alguna manera elless
comportamiento. Pero no tengo una solución, por el momento.less -S
, se arruinará en texto coloreado, o cualquier cosa con escapes ANSI. También podría arruinar Unicode.less -S
es más útil con texto en color. Puede usarless -S -E
para salir de inmediato, útil para cortar la salida de color en $ COLUMNS.Puede desactivar el ajuste de línea para
less
,tail
y cualquier otro mando bajo el sol con Linux:Para restaurar el uso del ajuste de línea:
fuente
El emulador de terminal terminator (http://software.jessies.org/terminator/) permite no ajustar líneas largas y tiene desplazamiento horizontal (pero está escrito en Java).
fuente
terminator v1.91
.terminator
, este al que se refiere gentledevil y el que está utilizando.Dos buenas respuestas / ejemplos aquí
http://www.commandlinefu.com/commands/view/1710/tail-a-log-file-with-long-lines-truncated
Una advertencia: al menos en el terminal integrado en mi corte Mac no parece manejar muy bien los caracteres de tabulación. Parece que los muestra con, por ejemplo, 8 espacios, pero solo los calcula como 4 espacios de ancho o algo así. En otras palabras, si su terminal tiene 80 caracteres de ancho y su salida contiene varias pestañas por línea, debe establecer el ancho en quizás 60 o algo así. YMMV.
fuente
Use las siguientes opciones con
less
. Deshabilitará el ajuste de texto y preservará los colores del texto, si se especifica.less -SR +F filename
fuente
Hay algunos ejemplos en esta página con la cola de tubería con -f ... de mis pruebas no funciona correctamente, si realmente necesita tubería (por ejemplo, si necesita canalizar algo más, como grep) puede usar algo como :
probablemente no sea el mejor para el rendimiento, pero funciona ... de lo contrario, si no se requiere una pipa adicional, puede usar algo diferente como:
fuente
Hay muchos comentarios que se desvían de la pregunta. La pregunta de OP fue
Se hicieron algunos comentarios sobre la función de autoenvoltura, indicando que no todos los terminales la tienen. Quizás. Pero (aparte del terminador , cuyos desarrolladores no documentan ninguna descripción de terminal ) todos los ejemplos dados fueron xterm, rxvt y algunos parecidos o descendientes. Esos están todos relacionados.
La
+aw
opción enxterm
corresponde alautoWrap
recurso. Consultando el manual, dice quey en XTerm Control Sequences dice
que ciertamente no "depende de su elección de terminal", ya que cualquier terminal con compatibilidad VT100 admite la función. xterm y rxvt hacen esto, por ejemplo. Los otros también lo hacen.
Es discutible si la función sería útil para OP. La supresión del ajuste de línea es solo un aspecto del problema:
COLUMNS
un valor "grande".cat
ingresar un archivo de registro en la pantalla).Hay buscapersonas que pueden hacer lo que se necesita, por ejemplo, multitail que enumera en sus características
Al estar basado en ncurses, debería funcionar en cualquiera de los terminales citados.
fuente
vi
dentro del tipo vi
Creo que también hay un complemento para vi que te dará un comportamiento similar al de la cola.
fuente
Si realmente desea ver las líneas completas, puede copiar y pegar el texto en un editor de texto como Atom o Notepad ++ y deshabilitar los ajustes de línea allí.
fuente