GNU/Linux >> Tutoriales Linux >  >> Linux

Agregar comportamiento de cola donde enter agrega líneas en blanco a menos

Esto no es realmente tail el comportamiento de -- es la terminal. Tail simplemente está enviando un flujo de salida a stdout, que va a tu terminal, y estás insertando líneas en blanco en el medio de esa salida presionando enter. Tail en sí no está aceptando tu entrada en absoluto. Puedes escribir lo que quieras y eso también aparecerá.

less , sin embargo, es una aplicación de consola y toma entradas y las procesa. Está administrando la consola usando secuencias de control de terminal, que es cómo puede desplazarse. Permitirle insertar caracteres arbitrarios en la secuencia estropearía la pantalla y, de todos modos, usaría menos su entrada para controlar el programa.

Desafortunadamente, no parece tener una forma de marcar visualmente la posición actual. Sin embargo, esa no es una solicitud de función terrible, y menos lo hace Todavía obtengo nuevas características de vez en cuando.


Encontré tu pregunta mientras buscaba la misma respuesta para mí.

Decepcionado por la respuesta aceptada, se me ocurrió una solución. Es menos que ideal, pero me permite marcar mi posición en el registro que sigo con less , que es el punto.

Creé un pequeño script ejecutable (lo llamé marklog ) con el siguiente contenido, y ponerlo en mi camino:

#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1

Por supuesto, esto solo funciona si tiene acceso de escritura al archivo de registro, lo que podría ser un factor decisivo en muchas situaciones. También creé esta versión que uso para escribir en archivos de registro que no me pertenecen (pero a los que tengo acceso sudo):

#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"

Estos guiones proporcionan justo el tipo de descanso visual que estaba buscando. Hay al menos 3 formas de usarlos:

  1. En el punto en el que normalmente presionaría Intro varias veces al usar tail -f , en su lugar ejecuta marklog desde otro terminal (proporcionando la ruta al archivo de registro como argumento).

  2. Utilice Ctrl Z suspender less para que pueda ejecutar el script en la misma ventana de terminal, pero cuando vuelve a poner en primer plano less (usando fg , por supuesto), ya no estará en modo 'seguir', por lo que deberá presionar Shift F de nuevo...

  3. Por último, y esta podría ser la forma más conveniente, porque no necesita escribir la ruta al archivo de registro:Ejecute marklog directamente desde less escribiendo !marklog % . Less sustituirá el nombre de archivo actual por % . Sin embargo, less no responderá al ! mientras está en modo 'seguir', tendrá que pulsar Ctrl C primero para salir del modo de seguimiento, ejecute !marklog % , luego Mayús F de nuevo.

Con el método 3, también obtienes la ventaja añadida del historial de comandos de Less:simplemente presiona el ! y luego use la flecha hacia arriba para seleccionar el comando más reciente (para mí, siempre es marklog ).

Espero que esto ayude a alguien tanto como ya me ayudó a mí.


Linux
  1. ¿Número de líneas emitidas por Ls?

  2. Diff ¿Dónde las líneas son en su mayoría iguales pero desordenadas?

  3. Recuperar registros de las últimas 100 líneas

  4. ¿Hay alguna forma de mantener el texto pasado a la cabeza, la cola, menos, etc. para ser coloreado?

  5. Agregar una línea en el archivo de hosts, obtener permiso denegado al usar sudo - Mac

¿Cómo eliminar líneas en blanco de un archivo (incluidos tabuladores y espacios)?

¿Cómo seguir la salida -f con colores usando solo Awk y mostrar el resto de la salida?

Agregar caracteres de nueva línea a las variables de shell de Unix

cadena de eco | xclip -selection clipboard , copia la 'cadena' pero también le agrega una nueva línea. ¿Cómo arreglar esto?

¿Cómo puedo enviar un comando a un archivo sin obtener un archivo en blanco por error?

Uso de la cola para seguir un archivo sin mostrar las líneas más recientes