Cómo borrar el historial de la línea de comandos de Linux
Es posible que desee borrar el archivo de historial y la pantalla por razones de seguridad. Algunas distribuciones de Linux pueden borrar la pantalla cuando cierra la sesión, pero otras no. Muchos programas leen la entrada como una sola línea a la vez.
La biblioteca de historia de GNU puede realizar un seguimiento de esas líneas, asociar datos arbitrarios con cada línea y utilizar información de líneas anteriores para componer otras nuevas. Bash y otros shells pueden usar esta biblioteca de historial. El archivo predeterminado es ~ / .history o ~ / .bash_history.
Característica de la historia de Bash
La función de historial de bash depende de una variable llamada HISTFILE, normalmente establecido en el usuario actual .bash_history archivo (ubicado en el directorio de inicio del usuario). Cuando se repite, devuelve la ruta completa y el nombre del archivo de historial del usuario, así:
$ echo $HISTFILE /home/franhesco/.bash_history
1) Eliminar el comando de historial de Linux
El historial se puede restablecer con algún comando, pero después de la operación, si cierra la sesión e inicia sesión en su shell, verá el mismo historial
una. Eliminar los comandos anteriores
Puedes usar history -c
comando para borrar el comando del historial anterior en el shell actual. Eso es suficiente (pero exagerado) si acaba de escribir su contraseña y no ha salido de ese shell ni ha guardado su historial explícitamente.
El siguiente ejemplo muestra nuestro historial actual
$ history 1 history 2 vim .bash_history 3 exit 4 history
Ahora usemos el comando.
$ history -c
$ exit
Cuando sale de bash, el historial se guarda en el archivo de historial. El historial creado durante la sesión actual se adjunta al archivo, las entradas que ya están presentes no se ven afectadas. Revisemos la nueva historia
$ history 1 history 2 vim .bash_history 3 exit 4 exit 5 history
Agreguemos algún comando a nuestra historia.
$ history 1 history 2 vim .bash_history 3 exit 4 exit 5 history 6 ls -l 7 mkdir aa 8 ls -li 9 history
Para sobrescribir el archivo de historial con el historial del shell actual, ejecute history -w
después history -c
mando
$ history -c
$ history -w
$ exit
Después de iniciar sesión nuevamente, revisemos nuestro historial
$ history 1 history -w 2 exit 3 history
Puedes ver que nuestra historia comienza en history -w
comando de entrada.
B. Eliminar un solo comando
Puede eliminar las entradas del historial que no desee con el -d
opción. Esto eliminará la entrada del historial en el desplazamiento de posición. Pero cuando cierra la terminal y la abre de nuevo, los historiales no se eliminan. Entonces finalmente usamos history -w
para guardar los cambios.
# history -d offset
Por ejemplo:
# history 1 cd 2 history 3 ls -alhF 4 history 5 wget username:password@private.ftp.com/secret/file.tar.gz 6 mkdir
Ahora, si desea eliminar la sexta entrada que es el comando mkdir, simplemente use:
# history -d 5
# history -w
Ver el resultado
# history 1 cd 2 history 3 ls -alhF 4 history 5 wget username:password@private.ftp.com/secret/file.tar.gz 6 history 7 history -d 6
Puede ver que no teníamos la entrada de comando mkdir arriba.
2) Borrar bash completamente
Para borrar completamente el historial de bash en el servidor, una solución alternativa es vincular ~/.bash_history
a /dev/null
$ ln -sf /dev/null ~/.bash_history
Sin embargo, un efecto secundario molesto es que las entradas del historial están vinculadas a la memoria y volverán al archivo cuando cierre la sesión. Para solucionar esto, puede usar el siguiente comando:
ln -sf /dev/null ~/.bash_history && history -c && exit
3) Desactivar el historial de bash
Puede detener el registro del historial de una de las dos formas siguientes: desactívelo para todos los usuarios o desactive el historial de registro para un solo usuario.
una. Desactivar para todos los usuarios
Puede desactivar el historial de bash para todos los usuarios que agregan unset HISTFILE
en linea /etc/profile
expediente. Esta línea desactiva el archivo histórico de cada usuario en el sistema.
# echo "unset HISTFILE" >> /etc/profile
Debe tener permiso para aplicar el comando anterior
B. Desactivar para un usuario específico
Con el comando anterior, es posible desactivar el historial de bash de un usuario específico. Solo necesita indicar su archivo bash_profile.
# echo "unset HISTFILE" >> /home/papso/.bash_profile
Cada vez que el usuario inicie sesión, su historial se restablecerá como se muestra a continuación. Todo su comando de historial se guardará hasta que el usuario cierre la sesión
$ history 1 history
C. Editar .bashrc
Puede eliminar el comando de historial editando dos valores de los parámetros del comando de historial.
- HISTSIZE, que es la cantidad de líneas o comandos que se almacenan en la memoria en una lista de historial mientras su sesión de bash está en curso
- HISTFILESIZE, que guarda la cantidad de líneas utilizadas para la pila de historial cuando se escribe en el archivo de historial.
Para hacerlo, edite su .bashrc y añadir
HISTFILESIZE=0 HISTSIZE=0
Ahora puede eliminar con éxito el historial de bash e incluso dejar de iniciar sesión en el historial de bash utilizando cualquiera de los comandos mencionados anteriormente.
4) Eliminar algunas líneas de entradas
Puedes usar history -d offset
incorporado para eliminar una línea específica del historial del shell actual. No es realmente práctico si desea eliminar un rango de líneas, ya que solo toma un desplazamiento como argumento, pero puede envolverlo con un bucle.
Solo esta línea en el símbolo del sistema ayudará.
for i in {1..N}; do history -d START_NUM; done
Dónde START_NUM es la posición inicial de entrada en la historia norte es el número de entradas que quizás desee eliminar.
Revisemos las últimas 15 entradas de nuestro comando de historial.
# history 15 986 stat synchro 987 ln synchro sync2 988 stat synchro 989 debugfs /dev/vda 990 exit 991 echo $HISTFILE 992 cat .bash_history 993 ls -l .bash_history 994 passwd patrick 995 echo "unset HISTFILE" >> /home/papso/.bash_profile 996 history 997 for i in {1..10}; do history -d 867; done 998 history 999 history 30 1000 history 15
Ahora eliminemos 13 entradas comenzando en la línea 986
for i in {1..13}; do history -d 986; done
Ahora revisemos el resultado
# history 15 975 ls -il /home/bobbin/sync.sh filesync 976 ls -l /home/bobbin/sync.sh filesync 977 ln /home/bobbin/sync.sh synchro 978 ls -il /home/bobbin/sync.sh synchro 979 cp script script2 980 ls -il script script2 981 stat script 982 stat script2 983 man find 984 find / -inum 517333 985 stat filesync 986 history 30 987 history 15 988 for i in {1..13}; do history -d 986; done 989 history 15
Puede ver que no tenemos el mismo resultado.
Cuando un usuario inicia sesión con un inicio de sesión o un shell interactivo / sin inicio de sesión, el usuario .bash_history se abre el archivo. Ahora puede operar en este archivo con algunos comandos útiles. El historial es útil para recuperar los comandos utilizados anteriormente, pero puede que necesite eliminar algunas entradas de estos comandos utilizados. los ~/.bash_history
file no registra lo que escribe en respuesta a los mensajes de otros programas, solo lo que escribe en el propio indicador de bash.
Leer también: