Apuntes bash

No es un bug, es una característica del shell.

Acceder a comandos usados anteriormente en la terminal de Linux

En la terminal de Linux, existen varias formas eficientes de acceder a comandos que has utilizado previamente, incluyendo la autocompletación. Aquí te presento las principales:

1. Usando las flechas del teclado:

  • Flecha arriba (↑): Presiona esta tecla repetidamente para retroceder por los comandos ejecutados más recientemente.
  • Flecha abajo (↓): Después de usar la flecha arriba, puedes avanzar nuevamente en el historial.

2. Autocompletado con Tab:

  • Escribir las primeras letras y presionar Tab: Si escribes las primeras letras de un comando usado anteriormente y luego presionas la tecla <Tab>, la terminal intentará autocompletar el resto del comando.

    • Si hay múltiples coincidencias, presiona <Tab> dos veces rápidamente para ver una lista de los comandos que coinciden.

3. Búsqueda en el historial con Ctrl + R:

  • Presiona Ctrl + R. Aparecerá (reverse-i-search).
  • Escribe parte del comando que buscas. La terminal mostrará la coincidencia más reciente.
  • Sigue presionando Ctrl + R para buscar coincidencias anteriores.
  • Presiona Enter para ejecutar el comando encontrado o usa las flechas para editarlo.
  • Presiona Ctrl + G para salir de la búsqueda sin ejecutar nada.

4. El comando history:

  • Escribe history y presiona Enter para ver una lista numerada de los comandos en tu historial.
  • Filtrar el historial: Usa history | grep "palabra clave" para encontrar comandos que contengan una palabra específica (ejemplo: history | grep "git commit").
  • Ejecutar por número: Usa !n (donde n es el número del comando en la lista) para ejecutar un comando específico (ejemplo: !123).
  • Ejecutar por coincidencia inicial: Usa !string para ejecutar el comando más reciente que comience con "string" (ejemplo: !git).

¿Durante cuánto tiempo se guarda el historial?

La cantidad de comandos y el tiempo de conservación dependen de la configuración de tu shell. Por defecto, suele guardar los últimos 500 o 1000 comandos en el archivo ~/.bash_history. Esta configuración se puede modificar si es necesario.

2. Evitar duplicados en el historial:

  • HISTCONTROL=ignoredups: Ignora comandos duplicados consecutivos (configurar en .bashrc o .bash_profile y aplicar con source).
  • HISTCONTROL=erasedups: Borra todas las entradas anteriores duplicadas al guardar un nuevo comando (¡usar con precaución!).
  • Combinación: HISTCONTROL=ignoredups:erasedups para ambos comportamientos.

3. Ignorar comandos con espacio inicial:

  • HISTCONTROL=ignorespace: No guarda comandos que comienzan con uno o más espacios.
  • HISTCONTROL=ignoreboth: Combina ignoredups y ignorespace.
  • Uso: Teclear un espacio antes del comando para evitar que se guarde (si ignorespace está activo).

4. Borrar entradas del historial:

  • history -d <número_de_línea>: Borra la entrada específica por su número de línea (obtenido con el comando history).

  • Edición manual del archivo ~/.bash_history: Cerrar todas las terminales, editar el archivo con un editor de texto, eliminar las líneas deseadas, guardar y abrir una nueva terminal.

  • Limpiar todo el historial:

    • history -c: Borra el historial de la sesión actual (en memoria).
    • history -w: Sobrescribe el archivo .bash_history con el historial actual (generalmente vacío si se usó history -c antes).

5. Combinación de HISTCONTROL:**

  • Solo la última asignación de HISTCONTROL tiene efecto si se definen varias veces.
  • Para combinar opciones, separarlas con dos puntos (ejemplo: HISTCONTROL=ignoreboth:erasedups).

6. Borrar comandos existentes (después de configurar HISTCONTROL):

  • La configuración de HISTCONTROL afecta solo a los nuevos comandos.
  • Para eliminar entradas antiguas duplicadas, se recomienda la edición manual del archivo ~/.bash_history.
  • También se puede usar history -d repetidamente para borrar entradas específicas por su número de línea.

Resumen rápido de atajos útiles

  • !!: Ejecuta el último comando
  • !n: Ejecuta el comando número n
  • !palabra: Ejecuta el último comando que comienza por "palabra"
  • ^buscar^reemplazo: Repite el último comando sustituyendo "buscar" por "reemplazo"
  • Ctrl+R: Busca interactiva en el historial
TOP