tag editar easytag linux bash unix

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 o ignoreboth

    #> 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.

https://superuser.com/a/529193


echo "discreet";history -d $(history 1)