Ya sea que sea un principiante o un experto en bash, no puede seguir trabajando en la línea de comandos sin usar la función de historial de bash súper útil.
Probablemente ya sepa que si usa las teclas de flecha hacia arriba o hacia abajo en la terminal de Linux, puede ejecutar los comandos que ejecutó anteriormente.
Esto está disponible gracias al comando bash history.
1. Ver tu historial de bash
La forma más sencilla de ver los comandos que ha escrito anteriormente es usar el historial de comandos.
history
Mostrará cien o quizás mil comandos almacenados en su historial. El tamaño depende de la variable HISTSIZE.
Si no desea que su pantalla se sature, puede limitar la cantidad de líneas que muestra. Por ejemplo, para mostrar solo los últimos 7 comandos del historial, utilícelo así:
history 7
2. Ejecutar comando desde el historial de bash
Cuando está mirando el historial, puede ejecutar un comando usando su número con !
, así:
!#
Puedes volver a ejecutar el último comando con !!
. Un buen uso de esto viene cuando olvidas usarlo con un comando y luego lo usas rápidamente así para ejecutar con sudo:
sudo !!
También puede ejecutar el último comando comenzando con cierto texto como este:
!text
Suponga que ejecutó echo $HISTCONTROL anteriormente y desea ejecutarlo nuevamente. Puedes usarlo así:
!echo
Y el comando anterior ejecutará el último comando de eco ejecutado de su historial.
Hay una mejor opción para buscar en el historial y te la mostraré en la siguiente sección.
Consejo adicional:si no está seguro del comando, en lugar de ejecutarlo, imprímalo agregando :p
hasta el final de la misma. Entonces lo usas como !echo:p
, !23:p
etc.
3. Buscando en el historial de bash
Puede pensar que es más fácil usar el comando grep para buscar algo en el historial como este:
history | grep text
Una forma mejor y más práctica de buscar en el historial es usar ctrl+r
para iniciar la búsqueda inversa y escriba la cadena que está buscando.
Puede recorrer las opciones presionando ctrl+r
repetidamente y cuando encuentre el comando que estaba buscando, presione ctrl+o
o simplemente enter
para seleccionar y ejecutar ese comando.
Por ejemplo, el siguiente ejemplo busca un comando que tenga 'aud'.
Si no encuentra el comando, cambie su cadena de búsqueda o presione ctrl+g
para salir de la búsqueda inversa.
4. Reutilice argumentos de comandos anteriores en su historial
Aquí hay otras cosas geniales que puedes hacer con bash history. Puede usar argumentos de comandos anteriores en un nuevo comando.
Puede usar el último argumento del comando anterior así:
new_command !$
Por ejemplo, digamos que estaba leyendo un archivo con el comando menos y decidió que necesita editar este archivo. En lugar de escribirlo por completo, usa el !$
atajo.
La opción anterior le brinda solo el último argumento del comando anterior. Si quieres todos los argumentos, usa esto:
new_command !*
5. Limpiando tu historial de entradas redundantes
Hay una variable de entorno llamada HISTCONTROL que lo ayuda con las entradas redundantes en el historial de bash. Puede asignarle uno de los tres valores:
- ignorespace:con esta variable configurada, puede ejecutar un comando poniendo un espacio antes. El comando se ejecuta normalmente pero no se incluirá en el historial.
- ignoredups:si hay dos, hay más comandos idénticos ejecutados consecutivamente , solo uno de ellos se registrará en el historial.
- ignoreboth:establece las dos funciones mencionadas anteriormente.
Debe configurar la variable en su archivo bashrc para que se configure cada vez que use bash shell.
¿Demasiados comandos en tu historial de bash? Puedes borrar con la opción -c
. Esto borrará el historial actual de bash y comenzará a agregar comandos de nuevo a partir de ahora.
history -c
Hay mucho más para criticar la historia que estos cinco consejos que discutí aquí. Siempre puede consultar la página de manual del comando de historial para obtener información adicional. También es posible que desee obtener información sobre las funciones integradas del historial, si le interesa.
Espero que encuentre útil este artículo. Si tiene una función de historial de bash favorita, compártala en los comentarios.