Cómo usar su historial de Bash en el terminal 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.

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 de la historia de bash, pero es mucho más poderoso de lo que crees.

Atajos de teclado

Para desplazarse por su historial de bash, puede usar algunos de los muchos atajos de teclado útiles de bash. Presione estos métodos abreviados y los comandos que utilizó anteriormente aparecerán en el indicador.

  • Flecha arriba o Ctrl + P : vaya al comando anterior en su historial. Presione la tecla varias veces para retroceder por los comandos que ha utilizado.
  • Flecha abajo o Ctrl + N : vaya al siguiente comando en su historial. Presiona la tecla varias veces para avanzar por los comandos que has usado.
  • Alt + R : revierta cualquier cambio en un comando que haya extraído de su historial si lo ha editado en la línea actual.

Bash también tiene un modo especial de «recuperación» que puede usar para buscar comandos que haya ejecutado anteriormente, en lugar de desplazarse por ellos uno por uno.

  • Ctrl + R : Recupere el último comando que coincida con los caracteres que proporcione. Presione este acceso directo y comience a escribir para buscar 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 del historial sin ejecutar un comando.

Ver tu historial de Bash

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

 historial 

Verás una lista de todos los comandos en tu 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 canalizarlo al comando grep para buscar en su historial de comandos.

 historia | grep your_search 

También puede canalizarlo al comando tail para ver solo un pequeño número de los comandos recientes que ha ejecutado. Por ejemplo, el siguiente comando mostrará las últimas 5 entradas en su historial.

 historia | cola -5 

Ejecute comandos desde su historial

Bash puede «expandir» rápidamente los comandos anteriores, o expandirlos y modificarlos. Esta característica se conoce como «expansión de historial» y utiliza un signo de exclamación, conocido como «explosión». Simplemente escríbalos en el indicador y presione Entrar para ejecutarlos como si hubiera ejecutado cualquier otro comando.

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

! # 

Por ejemplo, supongamos que desea ejecutar el comando 12 desde su historial de bash. Ese es el comando con un «12» a la izquierda cuando ejecuta el comando history . Escribe 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 ver el comando anterior y luego presionar Entrar.

 !! 

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

Esta expansión funciona en cualquier parte de la línea. Puede agregar lo que quiera antes o después de !! o cualquiera de las otras expresiones en esta sección. Por ejemplo, puede escribir el siguiente comando para volver a ejecutar el último comando que ejecutó a través de sudo , dándole privilegios de root. Esto es particularmente útil si olvida agregar sudo antes de ejecutar un comando.

 sudo !! 

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

 !! El | texto grep 

Para buscar 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 recientemente ejecutó un comando que comenzó con ping , puede ejecutar el siguiente comando para buscarlo. Esto buscará hacia atrás a través de su historial, localizará el comando más reciente que comienza con « pi » e inmediatamente lo ejecutará:

! pi 

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

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

Reutilice argumentos de su historia

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

 comando! $ 

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

 nano! $ 

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

Esto solo completa el último argumento. Entonces, si ejecuta ping google.com -c 4 y luego ejecuta ping! $ , esto simplemente se expandiría a « ping 4 «.

Para solucionar esta situación, puede usar el siguiente truco para expandir el primer argumento en la línea, en lugar del último:

 comando! ^ 

Entonces, si ejecutó ping google.com -c 4 y luego ejecutó ping! ^ , bash lo expandiría a « ping google.com" .

Para completar todos los argumentos utilizados en el comando anterior en lugar de un solo argumento, debe utilizar lo siguiente:

 comando! * 

Entonces, si ejecutó ping! * en su lugar, bash completará automáticamente todos los argumentos que utilizó en el comando anterior.

Puedes usar el mismo truco que usas para ejecutar comandos desde tu historial para obtener argumentos de ellos. Solo usa el siguiente formulario.

 comando! abc: # 

Por ejemplo, ejecutamos el comando sudo hostname ubuntu anteriormente. Si ejecutamos el siguiente comando, bash buscará hacia atrás a través del historial para encontrar el último comando que comience con las letras que escribimos y completar el argumento que especificamos. Entonces, si ejecutamos echo! Su: 2 , bash buscará para encontrar el último comando que comience con “ su ” y completará su segundo argumento, que es “ ubuntu «.

Otros trucos funcionan como es de esperar. Por ejemplo, reemplazar el número con un asterisco, conocido como comodín, hace que bash complete todos los argumentos del comando:

 comando! 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 debería cambiarse. Esto puede ser ú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 » con el texto « xyz «.

 ^ abc ^ xyz 

Por ejemplo, si accidentalmente ejecutó ping gogle.com , podría ejecutar ^ gog ^ goog y bash ejecutaría el comando ping google.com en su lugar.

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

Bash shell almacena el historial de comandos que ha ejecutado en el archivo de historial de su cuenta de usuario en ~/.bash_history de forma predeterminada. 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 aún estarán en su archivo de historial listos para ver y usar. Cada cuenta de usuario tiene su propio archivo de historial con un historial de comandos separado.

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

 historial -c 

Bash solo recuerda un número limitado de comandos por defecto, evitando que el archivo de historial crezca demasiado. El número de entradas del historial que bash recuerda se controla mediante la variable HISTSIZE . 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 establecer su historial en cero, ejecute el siguiente comando.

 HISTSIZE = 0 

Para la sesión actual, bash no almacenará ninguna entrada del historial a menos que ejecute un comando como HISTSIZE = 1000 para volver a establecer un cierto número de entradas.

Cómo ignorar espacios y duplicados

Bash le permite ignorar las entradas del historial que comienzan con un espacio si establece la variable HISTCONTROL en 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 tiene esta variable habilitada. Esto le permite mantener su historial un poco más limpio, eligiendo ejecutar comandos sin que aparezcan en su historial.

Bash también le permite ignorar comandos duplicados que pueden saturar su historial. Para hacerlo, establezca HISTCONTROL en ignoredups.

 HISTCONTROL = ignoredups 

Para usar la función ignorespace y ignoredups , configure la variable HISTCONTROL en ignoreboth.

 HISTCONTROL = ignoreboth 

Tenga en cuenta que las variables 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 configuren automáticamente en cada sesión de bash que inicie, si así lo prefiere.

El shell bash es una herramienta compleja con muchas más opciones que estas. Consulte las secciones de Bash History Builtins y History Expansion en el manual oficial de bash para obtener información más detallada y otros trucos avanzados que puede usar.

Rate article
labsfabs.com
Add a comment