Cómo aprovechar al máximo el historial de comandos en la terminal

Aprende a utilizar el historial de comandos en la terminal

Si has trabajado en la terminal, es probable que seas competente en las funciones del historial de comandos de tu shell. Sin embargo, hay mucha más funcionalidad de la que muchos se dan cuenta, y al aprenderla puedes eliminar mucha escritura repetida.

Comandos básicos del historial

Lo primero que la mayoría de las personas aprenden sobre el historial de comandos es que se puede retroceder y avanzar a través del historial con las teclas de arriba y abajo. Por defecto, Bash almacena las entradas del historial entre las sesiones (en la mayoría de las distribuciones), por lo que debes tener acceso a los comandos que escribiste previamente, sin importar en qué terminal estés trabajando actualmente. Puedes desactivar este comportamiento para que el historial funcione solo para la sesión actual del shell que estás utilizando, agregando la siguiente línea a uno de los archivos de inicio (por ejemplo, ~/.bashrc):

SAVEHIST=0

La cantidad de comandos almacenados en el archivo del historial depende del tamaño del archivo que asignes. Por defecto, se almacenan 500 comandos, pero puedes ajustar estos valores estableciendo las siguientes opciones en un archivo de inicio:

HISTSIZE=1000
HISTFILE=~/.bash_history

Para imprimir todo el archivo del historial, puedes usar el comando history:

$ history | tail -10
 522 gvim
 523 vim .bashrc 
 524 vim .bash_profile 
 525 history
 526 ls
 527 echo $SHELL
 528 echo $HISTFILE
 529 echo $HISTSIZE
 530 vim .bashrc 
 531 history | tail -10
$

El número en la columna izquierda es el número de elemento del historial. Este número puede ser mayor que el tamaño del archivo de historial almacenado, ya que los comandos de la sesión actual no se agregan al archivo hasta que se cierra el shell.

Cómo utilizar Isearch para buscar archivos de texto en Linux

Puedes ejecutar cualquier línea de tu historial saltando directamente a ella escribiendo un '!' seguido del número del elemento. Por ejemplo, si queremos volver a escribir en la consola el nombre del shell, podríamos escribir echo $SHELL o simplemente:

$ !527
/bin/bash
$

Búsqueda en el historial de comandos

También puedes usar el comando '!' para buscar en el historial, reemplazando el número del elemento por caracteres del inicio del comando. El ejemplo anterior ahora se puede escribir igual de fácil:

$ !echo
echo $SHELL
/bin/bash
$

A menudo esto se vuelve complicado porque debes coincidir con el comando desde el principio, y muchos comandos comienzan de la misma manera (por ejemplo, "echo $HISTFILE", "echo $HISTSIZE", "echo $SHELL"). Siempre puedes hacer algo usando history y grep, pero hay una forma más fácil con el comando '!?'. '!?' seguido de una cadena simple ejecuta el último comando en el historial que contiene esa cadena.

Entonces, para volver a imprimir el nombre del shell, simplemente podríamos haber escrito:

$ !?SHELL
/bin/bash
$

Más útil aún, puedes buscar interactivamente en el historial de comandos en la consola presionando CTRL-R en el prompt y escribiendo la sección de la cadena que buscas. Solo puedes usar CTRL-R de forma interactiva, es decir, no en un script (aunque confiar en el historial en un script puede ser peligroso de todos modos), pero puede ahorrarte más pulsaciones de teclas, ya que muestra la coincidencia en cada punto, lo que significa que puedes dejar de buscar una vez que la encuentres.

Guía para entender y gestionar los permisos de archivos y directorios en Linux

El ejemplo anterior utilizando la búsqueda interactiva con CTRL-R:

(reverse-i-search)`SH': echo $SHELL

$HISTIGNORE

La variable de entorno HISTIGNORE controla qué comandos se agregan al historial y cuáles son ignorados. Contiene una lista de patrones separados por dos puntos (':') que, al coincidir, omiten un comando en lugar de incluirlo en el archivo. Por ejemplo, si no necesitas ver el programa 'history' en el historial de comandos (ya que es bastante redundante), puedes hacer lo siguiente:

$ export HISTIGNORE="history"
$ history
...
$ history | tail -1
581 export HISTIGNORE="history"
582 history | tail -1

Aquí puedes ver que la línea con simplemente history no se ha agregado a la lista, mientras que history | tail -1 sí se ha agregado; solo se filtran las coincidencias exactas de la lista HISTIGNORE. Si no quieres que aparezcan en el historial de comandos las líneas que comienzan con "history", puedes modificar tu variable HISTIGNORE de la siguiente manera:

$ export HISTIGNORE="history*"

Debes tener cuidado, ya que ignorar un elemento del historial significa que no se puede recuperar de ninguna manera, ni siquiera con las teclas de arriba y abajo. Si aún deseas mantener este comportamiento para todos los comandos, pero no quieres que aparezcan en un archivo de historial, es posible que te convenga dejar HISTIGNORE tal como está y recortar el archivo con un script al cerrar la sesión.

Algunas personas utilizan esta variable para mantener su archivo de historial ordenado, eliminando los comandos que es poco probable que necesiten recordar, como ls, fg o exit. Otro buen consejo que se encuentra en esta página es agregar "[ \t]*" a tu variable HISTIGNORE para que se ignore cualquier comando que comience con un espacio. Esto es útil si necesitas un poco más de privacidad para algunos comandos.

Cómo configurar un servidor Linux como puerta de enlace para una red local

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Código abierto, allí encontraras muchos artículos similares a Cómo aprovechar al máximo el historial de comandos en la terminal , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.