A menudo canalizo la salida del programa a menos, por ejemplo
produce_output | less
Esto funciona muy bien, hasta que produce_output
produce grandes cantidades de salida. Si busco texto que esté en el archivo, menos informes
Calculating line numbers... (interrupt to abort)
Si interrumpo con Control + C, también mata produce_output
, lo que impide que produzca más. ¿Hay alguna forma de enviar la interrupción a menos, para que eso produce_output
siga funcionando?
Sé que podría usar kill -INT less_process
, pero creo que debe haber una mejor solución.
kill
.select
para esperar la entrada de un archivo / tubería y terminal al mismo tiempo.F
(seguir). Las tuberías y los ttys son pollables de la misma manera.Puede deshabilitar los números de línea con el
opción.
fuente
Al trabajar con grandes cantidades de salida, me ha resultado muy útil enviar la salida a un archivo y usarla
tail -f
oless +F
mirarla, por ejemplo:La
2>&1
sintaxis asegura que tanto stdout como stderr vayan aout
--- elimínelo si solo desea que stdout vaya al archivo. De esta manera, puede inspeccionar la salida de varias maneras (incluso desde una máquina diferente) sin tener que meterse con el programa que produce la salida.Tenga en cuenta que
2>&1
puede ser específico de bash (no estoy seguro). Asegúrese de tener suficiente espacio en disco para el archivo de salida :-)fuente
2>&1
es POSIX, desnudo>&
es un bashismo.less +F
en mi ejemplo; Acabo de actualizar mi respuesta.less +F
(ya queless +F
procesa los datos a medida que se generan). El ejemplo que di no tiene el mismo problema que el publicado originalmente: ctrl + c no se interrumpiráprocess_output
. Si a uno no le importa la funcionalidad 'seguir', uno puede ejecutarproduce_output > out 2>&1
, entoncesless out
. Un problemaproduce_output | less
es que si algo rompe la tubería (por ejemplo, golpear accidentalmente 'q'less
), entoncesproduce_output
morirá (sin un manejo especial de SIGPIPE).También puedes hacer esto:
fuente