GNU/Linux >> Tutoriales Linux >  >> Linux

Comando Bash Clear Comportamiento extraño Elimina el búfer de desplazamiento hacia atrás.?

Cada vez que ejecuto claro en mi terminal, elimina el búfer de desplazamiento hacia atrás desde la parte superior de la pantalla hasta la línea actual. Lo he probado en xterm, st y urxvt, y el problema persiste. ¿Hay alguna manera de que pueda cambiar el comportamiento de borrar para que no toque el búfer de desplazamiento hacia atrás?

Respuesta aceptada:

El comentario "desde la parte superior de la pantalla hasta la línea actual" es ambiguo. Si quisiste decir desde la parte superior de la parte visible de la pantalla, ese no es el scrollback . El desplazamiento hacia atrás de una terminal es la parte que solo puede ver usando la barra de desplazamiento (o teclas adecuadas como shift pageup).

XTerm Control Sequences documenta la secuencia de escape relevante:

CSI Ps J  Erase in Display (ED).
            Ps = 0  -> Erase Below (default).
            Ps = 1  -> Erase Above.
            Ps = 2  -> Erase All.
            Ps = 3  -> Erase Saved Lines (xterm).

La capacidad de descripción del terminal clear usa el penúltimo, por ejemplo,

clear=E[HE[2J

para colocar el cursor en la parte superior izquierda y luego borrar toda la pantalla (visible). podrías utilice Borrar a continuación , pero eso no se usa en la descripción del terminal.

Refiriéndose a borrar el scrollback :Esa es una característica específica de la terminal, originalmente una secuencia de escape en xterm (1999, documentada en ctlseqs.ms pero no mencionada en los cambios) y más tarde (2011) implementada como una extensión para la consola de Linux y la descripción de la terminal correspondiente. La base de datos del terminal lo enumera como una "extensión miscelánea".

Actualmente, estas descripciones de terminales tienen la característica:

  • linux3.0 (el valor predeterminado actual para "linux")
  • masilla
  • xterm+basic (un bloque de construcción utilizado en la mayoría de las variantes de "xterm")

Si es compatible con los similares a xterm, como VTE, tendría que responderse mediante pruebas (no hay documentación útil para VTE o Konsole).

Si prefiere no usar la extensión, puede eliminar el E3 capacidad de la descripción del terminal que utiliza, por ejemplo,

infocmp -1x >foo
edit foo, removing the line with "E3="
tic -x foo

Sugerí usar las opciones -1 y -x para simplificar el formato y mostrar la característica a cambiar. El ejemplo dado en https://ghostbin.com/paste/kfsbj es consistente con ese consejo:

  • la ruta /home/flowerpick/.terminfo/x/xterm sería utilizado por ncurses
  • las capacidades AX y XT son capacidades extendidas (como E3 ), que se muestra con -x opción.

Si está utilizando más de un tipo de terminal, deberá hacer esto para cada uno (valor de $TERM ), y el cambio solo se aplica a la máquina donde ejecuta clear . El primer par de líneas del infocmp la salida muestra en cuál estás trabajando:

#   Reconstructed via infocmp from file: /home/flowerpick/.terminfo/x/xterm
xterm|xterm terminal emulator (X Window System),

Por ejemplo, uxrvt establece $TERM a algo como rxvt-unicode , produciendo líneas como esta en infocmp :

#       Reconstructed via infocmp from file: /lib/terminfo/r/rxvt-unicode       
rxvt-unicode|rxvt-unicode terminal (X Window System),

El st el programa usa xterm (o posiblemente xterm-256color ), aunque ha pasado un tiempo desde que vi una copia de eso que funcionó lo suficientemente bien como para comentar.

Relacionado:¿Forzar la pantalla en blanco e ignorar la entrada?

Por cierto, podrías tener un alias para clear que está enviando la secuencia de escape dada (ignorando la descripción del terminal), pero nadie lo ha informado.

Si desea "borrar arriba", eso no es tan sencillo como escribir "borrar". El escape

Linux
  1. Cómo borrar el historial de línea de comandos BASH en Linux

  2. ¿Cómo borrar el desplazamiento hacia atrás en el comando de pantalla?

  3. Ejecute el comando bash en la canalización de jenkins

  4. Aumente el tamaño del búfer de desplazamiento hacia atrás del terminal de Linux

  5. comando ip en la terminal Mac OS X

Comando de lectura Bash

bash heredoc

Comando de fuente Bash

Comando de historial en Linux (Bash History)

Comando Bash printf

Script Bash (II)