Uso mucho la Terminal y, a veces, ejecuto comandos, que no son cosas que no quiero que otros vean, pero hay más comandos que si accidentalmente avancé y ejecuté accidentalmente causarían muchos problemas.
Entonces, me pregunto si hay, o puedo hacer, algún tipo de 'modo incógnito' de Terminal que me permita, tras la ejecución de un cierto comando, detener la grabación de mi historial y luego solo comenzar a grabar después de ejecutar iniciar el historial de grabación nuevamente comando y salir del 'modo incógnito', o simplemente reinicio la Terminal
Porque me encuentro más tarde yendo y quitando cosas de mi .bash_history
, cuando sería mucho más fácil si hubiera podido dejar de grabar allí en primer lugar, o al menos haberlo intentado grabar en algún lugar donde simplemente no sería permitido, y terminaría sin grabarlo.
.bash_history
. (Ubuntu 15.04 arruinó la Terminal, por suerte, este es un USB en vivo.)Respuestas:
Ejecute un comando sin ponerlo en el historial:
Simplemente ponga un espacio antes del comando. Bash ignorará los comandos con un espacio antepuesto:
Ejemplo: Space
echo "Some secret text"
Nota: Esto solo funciona si la
HISTCONTROL
variable se establece enignorespace
oignoreboth
.Deshabilitar el historial temporalmente:
set +o history
o Spaceshopt -uo history
para deshabilitar el historial.set -o history
oshopt -so history
para habilitarlo nuevamente.Deshabilite el historial de la sesión actual (no recordará ningún comando de la sesión):
Nota: Podrá ver los comandos presionando Uphasta que cierre el terminal.
Eliminar un comando del historial:
correr Space
history | grep "part of your secret command"
Mostrará una lista de comandos ejecutados previamente, en este formato:
Seleccione el número de entrada a la izquierda del comando. Puedes copiarlo con Ctrl+ Shift+C
Ejecute Space
history -d <number>
donde<number>
está el número de entrada para eliminar la entrada.Puedes pegar ese número con Ctrl+ Shift+V
Otras respuestas interesantes:
fuente
history -d
para eliminar una línea, esto eliminará el contenido de la línea, pero nunca podrá eliminar el hecho de que ejecutóhistory -d
(a menos que lo use por primera vezset +o history
antes de ejecutarhistory -d
)unset HISTFILE
enfoque también funciona retroactivamente para todos los comandos en los que aún no se ha escrito.bash_history
.Simplemente puede eliminar el historial de una sesión de terminal en particular agregando un comando
history -cw
después de trabajar.No cierre la terminal antes de dar este comando.
fuente
shopt -uo history
debería hacerlo mejor.Nuking las
HISTFILE
variables (et al) no detendrá el Upregistro de su historial, simplemente no lo empujará al disco. Esto puede o no ser algo positivo para usted, pero dado que lo menciona, creo que quiere algo mejor. Cambiar lashopt
configuración del historial evita que se active todo el mecanismo del historial.Puede volver a activar el inicio de sesión con
shopt -so history
(-s
y-u
se configuran y desactivan respectivamente).Tenga en cuenta que el comando en sí probablemente se registrará, así que agréguele un espacio para evitar que se agregue al historial antes de borrar la variable.
fuente
Otra forma de matar el shell actual sin iniciar sesión en el archivo de historial es hacer:
Esto hace que bash (y probablemente otros shells también) envíen la señal SIGKILL a sí mismo, matándolo en el acto y evitando que escriba algo en el disco.
fuente
Para deshabilitar temporalmente el historial de comandos para la sesión actual, puede deshabilitar temporalmente la variable de entorno HISTFILE.
Mientras la sesión está activa, puede acceder al historial como de costumbre, pero no se guardará en el disco.
Para revertir en la misma sesión (se registrarán todos los cambios)
fuente
HISTFILE
nuevamente en la sesión actual? Si deshace el cambio (incluso después de ejecutar los comandos secretos), se guardarán en el historial cuando salga.Puede modificar las líneas del historial en la sesión de shell actual. Si recorre el historial (por ejemplo, con Upo Ctrl+ P) y cambia una línea sin ejecutarla , solo se guardará la versión modificada de la línea. Puede modificarlo de la forma que desee; buenas opciones incluirían usar Ctrl+ Upara dejar en blanco la línea o usar Esc#para poner un
#
carácter de comentario al principio.Para dejar una línea sin ejecutarla, recuerde no presionar Return( Enter). Lo que hago es volver a la línea más nueva de la historia a través de Esc>.
(En lugar de Escseguir >, en la mayoría de los terminales puede mantener Altpresionada >; lo mismo ocurre con la Esc#sugerencia anterior).
Nota: No puede modificar permanentemente las entradas de sesiones anteriores de esta manera. Esos cambios no se aplicarán al
HISTFILE
final de la sesión.fuente
También puede hacer que .bash_history sea de solo lectura. Primero vaciaría el archivo y luego haría:
fuente
Puede ejecutar los comandos confidenciales en una sesión de pantalla y luego destruir la sesión cuando haya terminado.
Alternativamente, puede mantener esa sesión de pantalla viva pero separada, y solo acceder a ella cuando realmente desee poder subir la flecha a los comandos que de otro modo serían peligrosos.
fuente
Personalmente lo uso
mksh
, y este shell por defecto no tiene archivo de historial. Eso significa que puede iniciar un shell alternativo comomksh
odash
(que viene por defecto) para ejecutar el comando que no desea que vean los usuarios y salir una vez hecho.bash
la historia solo registrará que lanzó un shell alternativo y eso es todo.fuente
También puede utilizar multiplexor terminal, como
tmux
,screen
. Entonces debajotmux
o lascreen
historia no se guardaría.fuente