linux - editar - Ejecute el comando sin mantenerlo en la historia
linux easytag (11)
Comience su comando con un espacio y no se incluirá en el historial.
Tenga en cuenta que esto requiere que se establezca la variable de entorno $HISTCONTROL
.
Compruebe que el siguiente comando devuelve
ignorespace
oignoreboth
#> echo $HISTCONTROL
Para agregar la variable de entorno si falta, la siguiente línea se puede agregar al perfil de bash. Ej.
%HOME/.bashrc
export HISTCONTROL=ignorespace
Después de obtener el perfil nuevamente, los comandos con prefijo de espacio no se escribirán en $HISTFILE
Quiero ejecutar algunos comandos pero no quiero almacenarlos en el historial de comandos. Para que nadie pueda buscarlo en el archivo .bash_history
.
¿Hay alguna forma de cómo ejecutar comandos bash de esta manera?
Como se menciona por @Doodad en los comentarios, unset HISTFILE
hace esto bien, pero en caso de que también quieras borrar algo del historial, haz echo $HISTFILE
para obtener la ubicación del archivo de historial (generalmente ~/.bash_history
), luego unset HISTFILE
, luego edita ~/.bash_history
(o lo que sea HISTFILE
fue, por supuesto, ahora está unset
así que no puedes leerlo).
$ echo $HISTFILE # e.g. ~/.bash_history
$ unset HISTFILE
$ vi ~/.bash_history # or your preferred editor
¡Luego editó su historia y el hecho de que la editó!
En cualquier sesión de bash determinada, configure el archivo de historial en / dev / null escribiendo:
exportar HISTFILE = / dev / null
Tenga en cuenta que, como se señala en los comentarios, ¡esto no escribirá ningún comando en esa sesión en el historial!
Simplemente no te metas con el trabajo duro de tu administrador de sistemas, por favor;)
[ACTUALIZACIÓN] @ La solución de Doodad es más elegante, simplemente desarma la variable: unset HISTFILE
(¡gracias!)
Esto es útil si desea borrar toda la historia, ¡incluido el hecho de que borró toda la historia!
rm .bash_history;export HISTFILE=/dev/null;exit
Hay varias formas de lograr esto. Esto establece el tamaño del archivo de historial en 0:
export HISTFILESIZE=0
Esto establece el archivo de historial en /dev/null
, inhabilitándolo de manera efectiva:
export HISTFILE=/dev/null
Para comandos individuales, puede prefijar el comando con un espacio y no se guardará en el archivo de historial. Tenga en cuenta que esto requiere tener el valor ignorespace
incluido en la variable de entorno $HISTCONTROL
(man bash y buscar ignorespace
para más detalles).
Puede considerar usar un caparazón sin historia, como quizás
/bin/sh << END
your commands without history
END
(quizás /bin/dash
o /bin/sash
podría ser más apropiado que /bin/sh
)
o incluso mejor utilizar la utilidad por batch , por ejemplo
batch << EOB
your commands
EOB
La historia contendría sh
o batch
que no es muy significativo
Puedes comenzar tu sesión con
export HISTFILE=/dev/null ;history -d $(history 1)
luego proceda con sus acciones furtivas. Establecer el archivo histórico en /dev/null
se registrará en el archivo de historial, pero esta entrada se eliminará fácilmente y no se mostrarán trazas (al menos en el archivo histórico).
Además, esto no es permanente.
Si está usando zsh , puede ejecutar:
setopt histignorespace
Después de establecer esto, cada comando que comience con un espacio se excluirá del historial.
Puede usar alias en .zshrc
para activarlo / desactivarlo :
# Toggle ignore-space. Useful when entering passwords.
alias history-ignore-space-on=''/
setopt hist_ignore_space;/
echo "Commands starting with space are now EXCLUDED from history."''
alias history-ignore-space-off=''/
unsetopt hist_ignore_space;/
echo "Commands starting with space are now ADDED to history."''
También puede usar el siguiente comando:
echo toto; history -d $(history | sed -n ''$s//s*/([0-9]*/)/s*.*$//1/p'')
Creo que es un comando muy portátil
Una extensión de la respuesta de @John Doe & @ user3270492. Pero, esto parece funcionar para mí.
<your_secret_command>; history -d $((HISTCMD-1))
No debería ver la entrada del comando en su historial.
Aquí está la explicación ...
La ''historia -d'' borra la entrada mencionada del historial.
El HISTCMD almacena el command_number del que se ejecutará a continuación. Entonces, (HISTCMD-1) se refiere al último comando ejecutado.
echo "discreet";history -d $(history 1)