¿Cómo limpiar realmente la terminal?

385

Puedo emitir el clearcomando o pulse Ctrl+ Lpara borrar la actual terminal de Ubuntu, pero esto sólo se desplaza hacia arriba salida anteriores y si se utiliza de desplazamiento del ratón o PgUPy PgDownllaves es difícil distinguir dónde empieza la salida de los fines de comandos anteriores y la salida del comando actual.

¿Hay alguna manera de borrar realmente el terminal para que no vea los resultados de comandos anteriores?

Stann
fuente
11
¡Presiona Ctrl + L dos veces y quedarás en blanco!
Pandya

Respuestas:

456

Sí, el comando que estás buscando es

reset

En contraste con clear, o Ctrl+ L, en resetrealidad reiniciará completamente el terminal , en lugar de simplemente borrar la pantalla. Sin embargo, no volverá a crear una instancia del shell (bash). Eso significa que el estado de bash es el mismo que antes, como si simplemente estuviera limpiando la pantalla.

Como @Wallacoloo menciona en los comentarios, este comando debería hacer lo mismo más rápidamente:

tput reset

De las otras respuestas:

Stefano Palazzo
fuente
99
Probablemente no importa para la mayoría de los usuarios, pero el comportamiento de resetdepende del terminal.
cthom06
2
Personalmente, no me importa que algo quede "arriba" a lo largo del desplazamiento cuando golpeo ^L. Yo no lo veo (que es lo que quiero!), Yo no lo siento, y si de pronto me necesita para restaurar lo que estaba allí - no hay problema. reseten contraste, es una herramienta mucho más difícil: la usaré cuando algo salió mal con el terminal, como cuando extrañas secuencias de escape arruinaron la pantalla por completo.
ulidtko
14
@ulidtko: importa cuando ejecutas sesiones consecutivas de programas con toneladas de salida. Si se desplaza hacia atrás, es fácil confundirse acerca de qué ejecución imprimió algo. Sé perfectamente que se podrían usar soluciones más sofisticadas en estos casos, pero no obstante es un escenario que se presenta con bastante frecuencia en sesiones de depuración rápidas y sucias.
UncleZeiv
77
También hay algo tput resetque hace visiblemente lo mismo, pero se completa instantáneamente (mientras que resetpuede tardar hasta unos 2 segundos antes de que vuelva a aparecer el mensaje).
Ponkadoodle
1
Esto hace que mi ventana putty.exe cambie de tamaño, sería bueno borrarla sin que eso suceda.
void.pointer
100

Estuve buscando esto por un tiempo y encontré un genio que publicó esto:

clear && printf '\e[3J'

Borra todo el búfer de la pantalla, muy limpio. Funciona en OS X y creo que funciona bien en la mayoría de los terminales * nix.

Para los curiosos, esta parte '\e[3J'es un comando de escape de terminal.

Goran
fuente
2
Hmm, funciona en xterm, Konsole y Linux VT, pero no en gnome-terminal ...
Ruslan
1
Gracias, funciona muy bien en mi Mac: realmente extrañé un verdadero estilo Bash reset.
JohnnyCoder
99
Gracias, eso es super útil! Que printf '\e[3J'significa ¿Cómo limpia el búfer?
Filip Spiridonov
44
tenga cuidado aliasing reset: hace más que simplemente borrar el terminal. por ejemplo, si accidentalmente imprime un archivo binario con basura aleatoria que corrompe el terminal (por ejemplo, deshabilita el eco de caracteres escritos), resetgeneralmente puede solucionarlo. por supuesto, el alias está bien siempre que sepa cómo \overrideusar un comando sombreado con alias.
RubyTuesdayDONO
44
Esta es la única respuesta que funciona para borrar el desplazamiento de Putty al acceder a algunos SSH a través de Winders.
dhaupin
45

También puede asignar un atajo en gnome-terminal yendo a Editar → Atajos de teclado . Yo uso Shift+ Ctrl+ Alt+ C.

restablecer y borrar acceso directo

Towolf
fuente
+1. Siempre tengo la barra de menús oculta; así que incluso después de años y años de usar gnome, nunca pensé en buscar esto. Gracias :-)
Stefano Palazzo
3
"Restablecer" no hace nada por mí, y "Restablecer y borrar" borra todo pero no vuelve a mostrar el mensaje. Ninguna de estas entradas de menú se comporta como el comando "restablecer" desde un terminal.
Hibou57
Como dijo @ Hibou57, mi método abreviado de teclado para "Restablecer" no parece hacer nada. ¿Esta funcionalidad está rota en 14.04?
Michael Martin-Smucker
“¿Esta funcionalidad está rota en 14.04?”: Esto es lo mismo con 12.04.
Hibou57
1
@ Hibou57 "Restablecer y borrar" no se espera que vuelva a mostrar el mensaje, pero si presiona Enter después, debería volver a mostrar el mensaje. Eso funciona para ti?
Don Hatch
19

Cruce la publicación de mi respuesta de stackoverflow .

Use el siguiente comando para hacer una pantalla clara en lugar de simplemente agregar nuevas líneas ...

printf "\033c"

sí, es un 'printf' en el indicador de bash.

Sin embargo, es probable que desee definir un alias ...

alias cls='printf "\033c"'

Explicación

\033 == \x1B == 27 == ESC

Entonces esto se convierte en <ESC>cel código de escape VT100 para restablecer el terminal. Aquí hay más información sobre los códigos de escape de la terminal.

Editar

Aquí hay algunas otras formas de hacerlo ...

printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e    Enable interpretation of of backslash escapes
# -n    Do not output a new line

KDE

¡Lo anterior no funciona en la consola de KDE (llamada Konsole) pero hay esperanza! Use la siguiente secuencia de comandos para borrar la pantalla y el búfer de desplazamiento hacia atrás ...

clear && echo -en "\e[3J"

O tal vez use el siguiente alias en KDE ...

alias cls='clear && echo -en "\e[3J"'

Obtuve el comando de limpieza de desplazamiento hacia atrás desde aquí .

Autodidacta
fuente
18

ejecuta este comando:

reset

Esto tiene el mismo efecto que lanzar un nuevo terminal.

dv3500ea
fuente
66
Cuando uso masilla, después de correr reset, todavía puedo desplazarme hacia arriba y ver cosas anteriores. ¿Es este un problema con PuTTY en lugar de reset?
Svish
@svish: es solo un problema o decisión de implementación de masilla.
belacqua
@jgbelacqua, Deal :)
Svish
Trabajó con la terminal MAC OS
Bira
2
@Bira No, resetno borra el desplazamiento hacia atrás en macOS 10.14 Mojave. Podrías intentar seq 100; resetver el desplazamiento hacia atrás todavía allí. En la terminal de macOS, Cmd+Kpuede borrar la pantalla y desplazarse hacia atrás.
Johnny Wong
8

Mi favorito es printf "\ec". Esto también puede ser printf "\033c"o printf "\x1bc". Esa es una secuencia de escape ansi que limpia milagrosamente la pantalla y el búfer para la salida del terminal (para la mayoría de los terminales estándar en los que he trabajado, parece que sé que funciona como gnome-terminal, terminator, xterm, etc.en Ubuntu) Linux)

Sé que esto funciona en Linux Mint y Ubuntu 14.04, así que no sé por qué la gente está agregando y preparando cosas como clear && echo -ne "\033c. printf "\ec"siempre ha funcionado para mi

Además, en mi .bashrctengo un enlace como este:

bind -x '"\C-t": printf "\ec"';

Ahora presiono ctrlttodo el tiempo.

dylnmc
fuente
¿Sabes cómo podría crearse una asignación utilizando la tecla de Windows? Este fragmento es realmente genial, funciona exactamente como Command-K en mac. Gracias.
Niloct
@Niloct puede ver si el terminal lo admite xev(simplemente escriba xevun terminal dentro de una sesión x). Por lo que pude ver, urxvt no lo admite; Si bien no lo intenté en un momento, estoy seguro de que no sería compatible. También dudo que xterm o gnome-terminal lo admitan. Es complicado con ansi-escapes. Saludos y perdón por la respuesta tardía.
dylnmc
Muy bien @dylnmc, te lo agradezco. Gracias por el comentario.
Niloct
5

Bueno, realmente depende, si está utilizando, Konsolepor ejemplo, incluso resetno le impide desplazarse más allá de la primera línea. En ese caso, debe utilizar alguna función del terminal particular que está utilizando. Pues Konsolelo es Edit > Clear History.

UncleZeiv
fuente
3

He encontrado que lo siguiente es bastante exitoso con Kubuntu:

alias clc="echo -en '\033c\033[3J'"

Puede usar clspara mantener la tradición de Windows, usar la versión de Matlab clco una propia. ¡Buena suerte!

Charles Bell
fuente
2

Otra alternativa a la respuesta @ Hibou57:

# The Octal Way
alias clear="echo -e '\033c\c'"

O

# The Hex Way
alias clear="echo -e '\x1b\c'"

Básicamente, esto tendrá exactamente el mismo efecto, imprimirá el ^[carácter (que borra su terminal) y no generará la nueva línea final.

TwystO
fuente
Corrección leve: imprime el ^[carácter (ESC) seguido del ccarácter, no solo el ^[carácter solo. Combinados, estos equivalen al código de terminal "RIS", que provoca un reinicio. Más información: xfree86.org/4.8.0/ctlseqs.html
jwd