Linux / Comando clear: limpiar la terminal y conservar el desplazamiento

clear es un comando que limpia la pantalla del terminal para organizar el espacio de trabajo. En las implementaciones comunes de ncurses, intenta borrar no solo la pantalla actual, sino también el búfer de desplazamiento si el terminal lo soporta, y usando la opción -x se puede dejar el búfer de desplazamiento intacto.

clear no elimina el historial de comandos ni archivos. Solo cambia la visualización de la pantalla, por lo que los comandos anteriores normalmente se pueden comprobar de nuevo mediante la función de historial de la shell.

¿Qué es el comando clear?

clear verifica el tipo de terminal en la variable de entorno TERM y utiliza la información funcional de la base de datos terminfo para emitir la secuencia de control adecuada. Por lo tanto, no es simplemente imprimir varias líneas en blanco, y su comportamiento detallado puede variar según el tipo de terminal y la implementación.

La descripción de las opciones en este artículo se basa en clear de ncurses, ampliamente utilizado en Linux.

Sintaxis básica

clear [-x] [-T TIPO_DE_TERMINAL]
clear -V

La forma más común de uso es ejecutarlo sin opciones.

clear

Lo que clear borra y lo que no borra

Objetivo Funcionamiento
Pantalla actual del terminal Borra la pantalla y mueve el cursor a la posición inicial.
Búfer de desplazamiento Si el terminal y ncurses admiten la función relacionada, intentará borrarlo en la ejecución predeterminada. Esto se puede evitar con -x.
Historial de comandos del shell No se elimina. Puede verificarse nuevamente con history o la flecha hacia arriba.
Fuente de salida del comando No afecta a los archivos de registro ni a los datos creados por el comando.
Variables de shell y directorio actual No se modifica.

Mantener el búfer de desplazamiento -x

clear -x

-x borra la pantalla, pero no intenta borrar el búfer de desplazamiento. Es útil si desea limpiar la pantalla y luego desplazarse hacia atrás para volver a la salida anterior.

Esta opción es una función de ncurses clear. Otros sistemas operativos o implementaciones pueden no admitirla, así que consulte clear -V o el manual del sistema correspondiente.

Especificar el tipo de terminal -T

clear -T xterm-256color

Generalmente, clear obtiene automáticamente el tipo de terminal desde la variable de entorno TERM, por lo que no se necesita -T. Solo se usa explícitamente para diagnosticar problemas de detección de terminal o generar secuencias de control para un tipo específico.

printf '%s\n' "$TERM"
infocmp "$TERM"

Si se especifica un tipo que no coincide con el terminal real, la pantalla puede borrarse de manera inesperada o pueden aparecer caracteres de control.

Organización de opciones

Opciones Descripción
-x Se omite la acción de limpiar el búfer de desplazamiento.
-T TIPO En lugar de TERM, se utiliza la información de funciones del tipo de terminal especificado.
-V Muestra la versión de ncurses asociada al programa y termina.

Diferencia entre Ctrl+L y clear

En la configuración básica de teclas de Readline de Bash, Ctrl+L vuelve a dibujar la pantalla y mueve la línea de entrada actual hacia arriba. Es conveniente cuando se quiere limpiar rápidamente la pantalla, pero no se puede garantizar que el manejo del búfer de desplazamiento del terminal sea igual que clear.

Método Ventajas Características
clear Puede usar la información de la función del terminal y seleccionar opciones. Dependiendo de la implementación, puede borrar incluso el historial de desplazamiento.
clear -x Es fácil volver a la salida anterior mientras limpia la pantalla. Es una opción de la implementación de ncurses.
Ctrl+L Se puede ejecutar rápidamente desde el teclado durante la entrada. El comportamiento puede variar según la configuración de edición de líneas del shell y el terminal.

Diferencia entre clear y reset

clear se utiliza para limpiar la pantalla de un terminal que funciona correctamente. Por otro lado, reset se utiliza para reinicializar el estado del terminal cuando la visualización de caracteres, el modo de entrada o los saltos de línea se han dañado debido a salida binaria o secuencias de control incorrectas.

reset

En caso de que la pantalla solo tenga demasiada salida, clear es rápido, y si los caracteres ingresados no se muestran o el modo de visualización está roto, reset es más adecuado.

Borrar la pantalla con tput

tput también puede utilizar la base de datos terminfo para mostrar las funciones del terminal.

tput clear

Útil cuando se necesita combinar funciones de control del terminal en scripts de shell. Sin embargo, en trabajos no interactivos donde la salida se envía a archivos o a un pipe, las secuencias de control pueden quedar como datos innecesarios, por lo que es recomendable verificar si la conexión al terminal está establecida.

Uso en scripts

A menos que sea un programa interactivo que actualice la pantalla repetidamente como un tablero, es mejor que el script no borre arbitrariamente la pantalla del usuario. Esto dificultará comparar mensajes de error y resultados anteriores, y en entornos de recopilación de registros, los caracteres de control podrían mezclarse.

if test -t 1; then
  clear
fi

test -t 1 verifica si la salida estándar está conectada a un terminal. Si el propósito es actualizar la pantalla, considere watch u otras herramientas de interfaz de terminal adecuadas para su propósito.

Resolución de errores

Variable de entorno TERM no establecida

El mensaje indica que TERM no está definido para esa ejecución. Puede ser normal en una tarea sin terminal, como un proceso automatizado cuya salida se envía a un archivo. Primero compruebe si realmente hay una terminal y si esa tarea necesita limpiar la pantalla.

printf '%s\n' "$TERM"

Cuando hay una terminal o pseudoterminal real, revise cómo el cliente SSH o el entorno de ejecución transmite su tipo mediante TERM. En una tarea sin terminal, omita clear en lugar de inventar un valor. No asigne xterm-256color solo para ocultar un error si el destino no corresponde a ese tipo de terminal.

Tipo de terminal desconocido

Puede que no haya una entrada de terminfo en el sistema correspondiente al valor TERM. Verifíquelo con infocmp "$TERM" e instale los paquetes de información de terminal necesarios o configure el cliente para enviar un valor compatible.

Después de clear todavía se ve la salida anterior.

El emulador de terminal puede no soportar la función de borrar el historial de desplazamiento, o la implementación de clear que se está utilizando solo puede borrar la pantalla. Esto es independiente de que el historial de comandos no se haya borrado.

Preguntas frecuentes

¿Al ejecutar clear también se borra el history?

No. clear cambia la visualización del terminal y no elimina el historial de comandos de Bash. La eliminación del historial se gestiona mediante funciones y configuraciones separadas de history.

¿Es posible borrar solo la pantalla manteniendo el desplazamiento?

En implementaciones de ncurses se puede usar clear -x. Verifique si la implementación de su sistema admite esta opción.

¿El comando clear puede eliminar archivos?

El comando clear normal solo emite secuencias de control del terminal y no elimina archivos. Sin embargo, puede haber un alias o función con el mismo nombre redefinido, así que si tiene dudas, verifíquelo con type -a clear.

Para comparar otras herramientas, consulte la Lista de comandos de uso frecuente en Linux. Para consultar las reglas y opciones, use Manual oficial de ncurses: clear(1) y Manual oficial de ncurses: tput(1).