68 votos

¿Cómo puedo restablecer la scrollback en el terminal a través de un comando de la shell?

Cuando el uso de la Terminal.app, usted puede limpiar la pantalla mediante el uso de la shell builtin clear o pulsando ^+L (Control-L).

Sin embargo, todo lo que esto hace es empujar el actual contenido de la pantalla de atrás de una pantalla de altura y restablecer el cursor o la entrada en la primera línea. Lo que significa que todavía puede desplazarse hacia atrás y ver.

Lo que también son capaces de hacer, es restablecer toda su scrollback pulsando la tecla⌘+K (Comando-K).

Después de que usted haya hecho esto, usted no puede desplazarse hacia atrás en todo.

En ciertas situaciones (en particular, antes de ejecutar screen o vim), me gustaría restablecer el desplazamiento hacia atrás antes de que el comando se ejecuta.

Hay un comando (como clear) que se implementa en OS X que me permita hacer esto? Dada la existencia de pbcopy y pbpaste, estoy pensando en algo similar pudiera existir, que me permita hacer esto.

94voto

Yasmine Mustafa Puntos 21

Terminal admite una extensión de la ED (Borrar Pantalla) de la secuencia de escape para borrar el desplazamiento de la espalda. También es apoyado por xterm. La ED de comandos, que se describe en el VT100 manual, acepta estos valores para el Ps parámetro:

ESC [ Ps J

Parámetro Parámetro Significado

0 Borrar desde la posición activa a la final de la pantalla
1 Borrar desde el comienzo de la pantalla a la posición activa
2 Borrar todos los de la pantalla

Terminal (y xterm) añade:

3 Borrar el desplazamiento de la espalda (también conocido como "Salvado de las Líneas")

Tenga en cuenta que esto sólo borra el desplazamiento de la espalda, no en la pantalla. Esto le permite borrar uno o el otro, o ambos, mediante el envío de dos secuencias de escape.

Por ejemplo, usted puede limpiar la pantalla y el desplazamiento de vuelta con el siguiente comando de shell: clear && printf '\e[3J'

( clear Comando busca la secuencia adecuada para la limpieza de la pantalla de la terminal actual, pero el "borrar hacia atrás" secuencia de escape es la costumbre y no debe ser modificable. Si pones esto en un script de shell que usted no sabe, por cierto solo se puede ejecutar con el Terminal, se debe comprobar que $TERM_APPLICATION es Apple_Terminal antes de enviarlo.)

34voto

Lasall Puntos 1235

⌘K, acceso directo a "Ver > Borrar scrollback".

ACTUALIZACIÓN: Esto puede ser automatizado con AppleScript con el siguiente comando:

osascript -e 'tell application "System Events" to keystroke "k" using command down'

...que usted puede, por supuesto, alias a lo que usted desea, o almacenar en una función en la ~/.profile script de inicio de sesión :)

Como medida de seguridad, aunque, para ser capaz de utilizar hasta en el fondo sin correr el riesgo de emitir una pulsación de tecla a un mal frontal de la aplicación, la recomiendo a los que la rodean con la siguiente prueba:

if application "Terminal" is frontmost

...lo cual nos da el siguiente código:

osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'

...que en los giros, correctamente escapado y aliased, termina en:

alias clear="osascript -e 'if application \"Terminal\" is frontmost then tell application \"System Events\" to keystroke \"k\" using command down'"

Y aquí está su nuevo clear! :)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X