Para no guardar un solo comando en su historial, simplemente preceda con un espacio (marcado ␣
aquí):
$ echo test
test
$ history | tail -n2
3431 echo test
3432 history | tail -n2
$ ␣echo test2
test2
$ history | tail -n2
3431 echo test
3432 history | tail -n2
Este comportamiento se establece en su ~/.bashrc
archivo, es decir, en esta línea:
HISTCONTROL=ignoreboth
man bash
dice:
HISTCONTROL
Una lista de valores separados por dos puntos que controlan cómo se guardan los comandos en la lista del historial. Si la lista de valores incluye
ignorespace , las líneas que comienzan con un carácter de espacio no se guardan en la lista del historial . Un valor de ignoredups hace que las líneas que coinciden con la entrada del historial anterior no se guarden. Un valor de
ignoreboth es la abreviatura de ignorespace e ignoredups .
ignoredups
Por cierto, es la razón por la que history | tail -n2
aparece solo una vez en la historia en la prueba anterior.
El historial de un terminal se guarda en la RAM y se vacía en el momento ~/.bash_history
en que cierra el terminal. Si desea eliminar una entrada específica de su ~/.bash_history
, puede hacerlo con sed
:
# print every line…
sed '/^exit$/!d' .bash_history # … which is just “exit”
sed '/^history/!d' .bash_history # … beginning with “history”
sed '/>>log$/!d' .bash_history # … ending with “>>log”
sed '\_/path/_!d' .bash_history # … containing “/path/” anywhere
En el último cambié el delimitador predeterminado /
a _
como se usa dentro del término de búsqueda, de hecho, esto es igual a sed -i '/\/path\//d' .bash_history
. Si las salidas de comando sólo las líneas que desea eliminar añadir la -i
opción y el cambio !d
a d
realizar la eliminación:
# delete every line…
sed -i '/^exit$/d' .bash_history # … which is just “exit”
sed -i '/^history/d' .bash_history # … beginning with “history”
sed -i '/>>log$/d' .bash_history # … ending with “>>log”
sed -i '\_/path/_d' .bash_history # … containing “/path/” anywhere