En esta breve guía, aprenderemos cómo evitar entradas duplicadas en el historial de Bash en Linux. Al trabajar desde la línea de comandos, es posible que haya ejecutado algunos comandos de Linux varias veces. Como ya sabes, cada comando que ejecutamos en la terminal se guarda en el archivo de historial. Entonces, ejecutar los mismos comandos una y otra vez llenaría el archivo de historial. Tarde o temprano, terminará con demasiadas entradas duplicadas en el archivo de historial.
De forma predeterminada, se almacenan 500 entradas de comandos en el archivo de historial. En los sistemas Ubuntu recientes, el tamaño del archivo es 1000. Una vez que la cantidad de entradas de comandos superó el límite predeterminado, las entradas más antiguas se eliminarán de la lista del historial. Por lo tanto, no puede recuperar las entradas antiguas. Por supuesto, puede aumentar el tamaño del archivo de historial y guardar tantas entradas como desee. Sin embargo, en lugar de aumentar el tamaño del archivo de historial, es mucho mejor evitar guardar duplicados en el archivo de historial.
Buscar la ubicación del archivo de historial
El historial de comandos es una característica específica del shell que se almacena por usuario. Según el SHELL que utilice, el archivo de historial se guarda en un archivo específico. En los sistemas Linux que usan Bash, los comandos se guardan en ~/.bash_history archivo por defecto. Puede verificar la ubicación del archivo de historial de su shell ejecutando el siguiente comando:
$ echo $HISTFILE
Aquí, HISTFILE es una variable que se utiliza para definir el nombre del archivo en el que se guarda el historial de comandos.
Salida de muestra de mi Ubuntu escritorio:
/home/sk/.bash_history
En CentOS 8 , obtuve el siguiente resultado:
/root/.bash_history
Cambiar la ubicación del archivo de historial
Si desea cambiar la ubicación predeterminada, ejecute:
$ echo "export HISTFILE=~/.custom_file" >>~/.bashrc
Reemplace "~/.custom_file" con el suyo propio en el comando anterior.
Ejecute el siguiente comando para aplicar los cambios:
$ source ~/.bashrc
Ahora veamos cómo evitar guardar los mismos comandos varias veces en ~/.bash_history archivo.
Evite entradas duplicadas en el historial de Bash en Linux
Recuperamos los últimos comandos ejecutados usando el comando "historial". Echa un vistazo al siguiente ejemplo:
$ history | grep ls
Salida de muestra:
8 lsb_release -a 13 ls -l 14 lsb_release -a 17 ls -l 20 ls -l 23 lsb_release -a 27 ls 29 lsb_release -a 32 ls 36 ls 42 ls 44 lsb_release -a 62 history | grep ls
Como puede ver en el resultado anterior, "ls" El comando se ha grabado varias veces. Podemos controlar estos duplicados usando HISTCONTROL variable. HISTCONTROL puede tener los siguientes valores:
- ignorar espacio - las líneas que comienzan con un espacio no se guardarán en el historial.
- ignorados - Las líneas que coincidan con la entrada del historial anterior no se guardarán. En otras palabras, los duplicados se ignoran.
- ignorar ambos - Es una abreviatura de los valores "ignorespace" e "ignoredups". Si establece estos dos valores en la variable HISTCONTROL, las líneas que comienzan con un espacio y los duplicados no se guardarán.
- borrados - eliminar duplicados en todo el historial.
Entonces, para evitar entradas duplicadas en el historial de Bash en Linux, edite su ~/.bashrc archivo:
$ nano ~/.bashrc
Agregue la siguiente línea al final:
export HISTCONTROL=ignoredups
Guarde y cierre el archivo. Aquí, anteponemos la variable HISTCONTROL con "exportar". Significa que la variable está disponible para todos los subprocesos. Más detalles, aquí .
Alternativamente, use la siguiente línea:
$ echo "export HISTCONTROL=ignoredups" >>~/.bashrc
Ahora ejecute el siguiente comando para aplicar los cambios:
$ source ~/.bashrc
O cierre sesión y vuelva a iniciarla para aplicar los cambios.
A partir de ahora, las entradas duplicadas no se registrarán. Puede verificarlo ejecutando el mismo comando varias veces y ver la lista de historial usando el siguiente comando:
$ history
También puede establecer varios valores para la variable HISTCONTROL separados por dos puntos, como se muestra a continuación:
export HISTCONTROL=ignoredups:erasedups
Para obtener más detalles, consulte la página de manual de Bash:
$ man bash
Lectura relacionada:
- Cómo borrar el historial de la línea de comandos en Linux
- Cómo borrar un comando específico del historial de Bash en Linux
- Cómo mostrar el historial de Bash sin números de línea