¿Cómo borro el historial del terminal?

93

Estoy usando Linux Mint 17.1 Rebecca durante aproximadamente 2 días y accidentalmente escribí mi contraseña en el terminal que ahora se muestra en la lista del historial de comandos que escribí anteriormente.

Quiero borrar el historial del terminal por completo. He intentado usar los siguientes comandos en el terminal que pensé que borrarían el historial para siempre, pero no lo hacen:

history -c
reset
tput reset

Los comandos anteriores "borrarán" el historial del terminal, pero cuando salgo y aparece uno nuevo, todo mi historial anterior todavía está allí y todos se pueden enumerar nuevamente usando el comando - history y también presionando la flecha ARRIBA en mi teclado . No quiero que esto suceda hasta que haya borrado por completo mi historial, luego quiero seguir usándolo.

¿Cómo puedo borrar mi historial de terminales por completo, para siempre y comenzar de nuevo?

Tenga en cuenta: no quiero salir del terminal sin guardar el historial, solo bórrelo para siempre en esta instancia.

Shambhala
fuente
1
sed -i "s/$your_pass//g" ~/.bash_history...
jasonwryan
3
@jasonwryan Eso por sí solo no resolvería el problema, ya que el comando sed terminaría en el historial del shell.
Gilles
1
Intenté usar el código de @jasonwryan pero obtuve: sed: -e expresión # 1, char 0: ninguna expresión regular anterior, lo que creo que sé por qué y eso me llevó a pensar en esto a partir de una búsqueda y algunos errores: cat / dev / null> ~ / .bash_history && history -c && exit
Shambhala
1
@Gilles: tienes razón: se supone que debe haber un espacio delante del comando ...
jasonwryan

Respuestas:

145

reseto tput resetsolo hace cosas a la terminal. La historia está completamente administrada por el shell, que no se ve afectado.

history -cborra tu historial en el shell actual. Eso es suficiente (pero excesivo) si acaba de escribir su contraseña y no ha salido de ese shell o ha guardado su historial explícitamente.

Cuando sale de bash, el historial se guarda en el archivo de historial, que por defecto está .bash_historyen su directorio de inicio. Más precisamente, el historial creado durante la sesión actual se agrega al archivo; las entradas que ya están presentes no se ven afectadas. Para sobrescribir el archivo de historial con el historial del shell actual, ejecute history -w.

En lugar de eliminar todas las entradas de su historial, puede abrir .bash_historyen un editor y eliminar las líneas que no desea conservar. También puede hacerlo dentro de bash, de manera menos conveniente, usando historypara mostrar todas las entradas, luego history -dpara eliminar las entradas que no desea y finalmente history -wguardar.

Tenga en cuenta que incluso después de haber editado el archivo de historial, es posible que su contraseña aún esté presente en algún lugar del disco desde una versión anterior del archivo. Ya no se puede recuperar a través del sistema de archivos, pero aún podría ser posible (pero probablemente no fácil) encontrarlo accediendo directamente al disco. Si usa esta contraseña en otro lugar y su disco es robado (o alguien tiene acceso al disco), esto podría ser un problema.

Gilles
fuente
1
Me gusta tu respuesta y aceptaré, como me dijiste, algunas cosas que no sabía que son muy útiles. ¡También cambiaré mi contraseña!
Shambhala
Primero escriba historypara verificar el contenido del registro del historial y los números de línea que desea eliminar, se supone que desea eliminar el número de línea 1000 en el registro del historial, luegohistory -d 1000
Claude COULOMBE
Si modifico el archivo .bash_history directamente, el comando de historial todavía muestra los comandos como estaban antes de la modificación, hasta que
cierre
35

He intentado la historia -c, pero la historia vuelve una vez que salimos y se vuelve a abrir. Esto me ayudó.

cat /dev/null > ~/.bash_history && history -c && exit

Esto borra el historial guardado en el archivo de historial, así como el historial en la sesión actual (para que no se guarde en el archivo cuando se bashcierra). Luego sale de la cáscara. La próxima sesión de shell no tendrá historial.

athul
fuente
18

En lugar de eliminar todas las entradas de tu historial, escribe estos comandos en tu terminal:

  1. history -c (para borrar el historial)
  2. history -w (guardar historial)
usuario171143
fuente
Esto no será suficiente con zsh si inc_append_historyo share_historyopción se establece.
saga
5

Debido a que aquí hay un problema de seguridad, debería considerar eliminar de manera segura el archivo de historial.

$ shred -u ~/.bash_history && touch ~/.bash_history
C0D3R3D
fuente
3

Como neófito enfrentado al mismo problema, recurrí al recurso más bien brutal de eliminar y recrear el archivo de historial:

rm .bash_history
touch .bash_history

Funcionó para mí sin dar lugar a ningún efecto secundario desagradable que yo sepa.

Peludo joe
fuente
3

Tipo: history -c; rm ~/.bash_history

history -cborra el historial de su sesión actual, rm ~/.bash_historyborra su historial a largo plazo, entonces history -c; rm ~/.bash_historyborra ambos.

ANTONIO
fuente
La explicación puede ayudar al OP a comprender mejor.
Mestizo