Cómo usar su historial de Bash en la terminal de Linux o macOS

Cómo usar su historial de Bash en la terminal de Linux o macOS

El shell bash es el entorno de terminal estándar incluido con la mayoría de las distribuciones de Linux, incluido con macOS y disponible para su instalación en Windows 10. Recuerda los comandos que escribe y los almacena en un archivo de historial. Probablemente conozcas algunos conceptos básicos del historial de bash, pero es mucho más poderoso de lo que piensas.

Atajos de teclado

Para desplazarse por su historial de bash, puede usar algunos de los muchos atajos de teclado útiles de bash. Presione estos accesos directos y los comandos que utilizó anteriormente aparecerán cuando se le solicite.

  • Flecha hacia arriba Dónde Ctrl + P: Ir al pedido anterior de su historial. Presione la tecla varias veces para volver a los comandos que ha utilizado.
  • Flecha hacia abajo Dónde Ctrl + N: pasa al siguiente pedido de tu historial. Presione la tecla varias veces para recorrer los comandos que ha utilizado.
  • Alt + R: Deshaga los cambios realizados en un pedido que haya extraído de su historial si lo ha cambiado en la línea actual.

Bash también tiene un modo especial de «devolución de llamada» que puede usar para encontrar comandos que ya ha ejecutado, en lugar de desplazarse por ellos uno a la vez.

  • Ctrl + R: recupera el último comando correspondiente a los caracteres que proporcionas. Toque este atajo y comience a escribir para encontrar un comando en su historial de bash.
  • Ctrl + O: Ejecute el comando que encontró con Ctrl + R.
  • Ctrl + G: Salga del modo de búsqueda de historial sin ejecutar ningún comando.

Ver su historial de Bash

Puede imprimir todo su historial de bash en la pantalla ejecutando un solo comando:

history

Verá una lista de todos los comandos en su historial de bash, junto con un número a la izquierda de cada uno. El comando con un «1» al lado es el comando más antiguo en su historial de bash, mientras que el comando con el número más alto es el más reciente.

Puedes hacer lo que quieras con la salida. Por ejemplo, puede dirigirlo al greppara buscar su historial de pedidos.

history | grep your_search

También puede dirigirlo al tail para mostrar solo una pequeña cantidad de comandos recientes que ha ejecutado. Por ejemplo, el siguiente comando mostrará las últimas 5 entradas de su historial.

history | tail -5

Ejecuta comandos de tu historial

Bash puede «extender» rápidamente comandos anteriores, o expandirlos y modificarlos. Esta función se llama «expansión del historial» y utiliza un signo de exclamación, llamado «explosión». Simplemente escríbalos en el indicador y presione enter para ejecutarlos como lo haría con cualquier otro comando.

Para ejecutar un comando específico de su historial por número, use el siguiente comando:

!#

Por ejemplo, digamos que desea ejecutar el comando 12 de su historial de bash. Este es el comando con un «12» a la izquierda cuando ejecuta el history pedido. Escribirás el siguiente comando.

!12

Para volver a ejecutar el último comando que ejecutó, escriba lo siguiente. Esto tiene el mismo efecto que presionar la flecha hacia arriba una vez para mostrar el comando anterior y luego presionar Enter.

!!

También puede hacer referencia a un pedido varias líneas atrás. Por ejemplo, !-2 ejecutaría el penúltimo comando que ejecutó. !! significa lo mismo que !-1 .

This expansion works anywhere on the line. You can add anything you like before or after !! o cualquiera de las otras expresiones de esta sección. Por ejemplo, puede escribir el siguiente comando para volver a ejecutar el último comando que ejecutó sudo, dándole privilegios de root. Esto es especialmente útil si olvida agregar sudo antes de ejecutar un comando.

sudo !!

O, por ejemplo, puede volver a ejecutar el comando anterior y canalizar su salida a grep para buscar texto.

!! | grep text

Para encontrar un comando en su historial y ejecutarlo, escriba lo siguiente. Esto ejecutará el último comando que coincida con el texto que especifique:

!text

Entonces, si ejecutó recientemente un comando que comienza con ping, puede ejecutar el siguiente comando para encontrarlo. Esto buscará en su historial, ubicará el pedido más reciente que comienza con «pi«, y ejecútelo inmediatamente:

!pi

Puede adjuntar un :p a cualquiera de las extensiones anteriores y bash imprimirá el comando en la terminal sin ejecutarlo. Esto es útil si desea confirmar que está seleccionando el comando correcto antes de ejecutarlo.

!12:p
!!:p
!text:p

Reutiliza argumentos de tu historia

Bash también te permite ejecutar un nuevo comando, pero usa argumentos de comandos anteriores en tu historial. Esto puede ayudarlo a reutilizar rápidamente argumentos largos o complicados sin tener que volver a escribirlos.

command !$

Por ejemplo, digamos que ejecutó el comando touch /home/chris/some_long_file_name_you_dont_want_to_type_again . Ahora quieres ejecutar el comando nano /home/chris/some_long_file_name_you_dont_want_to_type_again. En lugar de escribirlo todo desde cero, puede ejecutar:

nano !$

los !$ haría que bash completara automáticamente el último argumento de su comando anterior.

Esto solo llena el último argumento. Así que si corres ping google.com -c 4 entonces corre ping !$ , esto simplemente se extendería a «ping 4«.

Para resolver esta situación, puede utilizar el siguiente truco para expandir el primer argumento de la fila, en lugar del último:

command !^

Así que si corriste ping google.com -c 4 luego corrió ping !^ , bash ampliaría esto a «ping google.com".

Para completar todos los argumentos usados ​​en el comando anterior en lugar de un solo argumento, debe usar lo siguiente:

command !*

Así que si corriste ping !* en su lugar, bash completará automáticamente cualquier argumento que haya utilizado en el comando anterior.

Puede usar el mismo truco que usa para ejecutar comandos de su historial para obtener argumentos de él. Simplemente use el siguiente formulario.

command !abc:#

Por ejemplo, ejecutamos el comando sudo hostname ubuntu más temprano. Si ejecutamos el siguiente comando, bash buscará en el historial para encontrar el último comando que comience con las letras que escribimos y completará el argumento que especifiquemos. Entonces si corremos echo !su:2 , bash buscará el último comando que comience con «su«Y completa su segundo argumento, que es»ubuntu«.

Otros consejos funcionan como es de esperar. Por ejemplo, si reemplaza el número con un asterisco, llamado carácter comodín, bash llena todos los argumentos del comando:

command !abc:*

Vuelva a ejecutar el comando anterior y modifíquelo

Bash también le permite volver a ejecutar el comando anterior y especificar algo que debe cambiarse. Esto puede resultar útil para corregir un error tipográfico en un comando. Por ejemplo, el siguiente comando volverá a ejecutar el comando anterior, reemplazando el texto «abc«adentro con el texto»xyz«.

^abc^xyz

Por ejemplo, si accidentalmente corriste ping gogle.com, entonces puedes correr ^gog^goog y bash ejecutaría el comando ping google.com al lugar.

¿Dónde se almacena su historial y cómo borrarlo?

El shell bash almacena el historial de los comandos que ha ejecutado en el archivo de historial de su cuenta de usuario en ~ / .bash_history por defecto. Por ejemplo, si su nombre de usuario es bob, encontrará este archivo en /home/bob/.bash_history.

Debido a que su historial se almacena en un archivo, persiste entre sesiones. Puede ejecutar algunos comandos, cerrar sesión, volver al día siguiente y esos comandos seguirán estando en su archivo de historial, listos para ser vistos y utilizados. Cada cuenta de usuario tiene su propio archivo de historial con un historial de comandos independiente.

Para borrar su historial de bash, puede ejecutar el siguiente comando. Esto borra el contenido del archivo .bash_history de su cuenta de usuario:

history -c

Bash solo recuerda un número limitado de comandos de forma predeterminada, lo que evita que el archivo de historial crezca demasiado. El número de entradas del historial que recuerda bash está controlado por el HISTSIZEvariable. El valor predeterminado suele ser 500 o 1000 entradas. Puede ejecutar el siguiente comando para ver el tamaño del historial de bash en su sistema.

echo $HISTSIZE

Para restablecer su historial, ejecute el siguiente comando.

HISTSIZE=0

Para la sesión actual, bash no almacenará ninguna entrada del historial a menos que emita un comando como HISTSIZE=1000 para reducirlo a varias entradas.

Cómo ignorar espacios y duplicados

Bash le permite ignorar las entradas del historial que comienzan con un espacio si establece el HISTCONTROLvariable a ignorespace.

HISTCONTROL=ignorespace

Escriba un espacio antes de un comando antes de ejecutarlo en el shell bash y el comando se ejecutará normalmente, pero no aparecerá en su historial si esta variable está habilitada. Esto le permite mantener su historial un poco más limpio, eligiendo ejecutar comandos sin que aparezcan en su historial.

Bash también te permite ignorar pedidos duplicados que pueden saturar tu historial. Para hacer esto, configure HISTCONTROL Para ignoredups.

HISTCONTROL=ignoredups

Para usar tanto el ignorespace y ignoredups función, configure el HISTCONTROL variable a ignoreboth.

HISTCONTROL=ignoreboth

Tenga en cuenta que las variables de bash que establezca solo persistirán durante la sesión actual. Deberá agregarlos al archivo .bashrc de su cuenta de usuario para que estos valores se establezcan automáticamente en cada sesión de bash que inicie, si lo prefiere.

El shell bash es una herramienta compleja con muchas más opciones que estas. Consultar el Integrado de la historia de Bash y Ampliación de la historia secciones del manual oficial de bash para obtener información más detallada y otros consejos avanzados que puede utilizar.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Experto Geek - Tu Guía en Tendencias Tecnológicas