¿Hay alguna forma de evitar que se agregue un comando a su historial? Tengo un comando que quiero mantener fuera de mi archivo de historial, y realmente no me importa tenerlo allí cuando busco el historial almacenado en la memoria, aunque eso es menos preocupante. ¿Hay alguna manera de evitar esto, o solo tengo que volver y editar mi archivo de historial?
Actualización: no me di cuenta de que esto podría ser específico del shell. Mi caparazón es zsh. Le invitamos a responder por otros proyectiles para que la gente sepa cómo hacerlo en su caparazón.
bash
security
zsh
command-history
xenoterracida
fuente
fuente

Respuestas:
En ZSH :
Primero inserte
setopt HIST_IGNORE_SPACEen su~/.zshrc. Ahora, después de iniciar sesión de nuevo, puede anteponer cualquier comando que no desee almacenar en el historial con unspace.Desde el manual del usuario , las siguientes 3 opciones se pueden usar para decir que ciertas líneas no deberían entrar en el historial:
fuente
| somecommandpreexecque se puede usar para eso. Si devuelve un valor distinto de cero, el comando no se guarda en el historial.setopt HIST_IGNORE_SPACEen~/.zshrcSi está ejecutando el comando una y otra vez, es posible que desee utilizar la función de ignorar el historial de su shell. Digamos que tiene secret.server.com al que desea enviar ssh, archivos FTP, etc., que no desea que se guarde ninguna línea que mencione secret.server.com:
En
bashti pondríasmientras que en
zshel parámetro se llamaPuede enumerar múltiples patrones con dos puntos separándolos. Tenga en cuenta que cada patrón coincide con la línea de entrada completa , por lo que es posible que deba incluir un *. Por ejemplo, lo siguiente excluirá
fortunedel historial, pero almacenaráfortune -l:Con HISTIGNORE configurado, nada que coincida con los patrones que enumere se guardará en
.bash_history/.zsh_historye incluso la tecla de flecha hacia arriba, que normalmente recuerda su comando anterior, no funcionará si coincide con su patrón.fuente
HISTIGNORE="^fortune*"ignorarfortune -lpero mantenermyfortune?En bash, usa la
HISTCONTROLvariable.Ajústelo a
HISTCONTROL=ignorespace(oHISTCONTROL=ignoreboth). A partir de ahora, cuando comience una línea con un espacio , no se guardará en el historial. Esto evita incluir el comando no-a-ser-revelado en algún archivo de configuración.Incluso así, se olvida de agregar el espacio y luego quiere volver. Para eliminar una entrada en el historial, use
history -d <index>, conindexel número encontrado con elhistorycomando (primera columna).fuente
zsh?La forma más fácil para una única vez es
donde
$representa el aviso del shell inicial y$$representa el aviso del subshell. Esto funciona en bash y zsh; en ksh necesitas en suHISTFILE=/notwritablelugar. Tenga en cuenta que lo que importa es el valor deHISTFILEcuándo se escribe el archivo de historial, no cuando se ejecuta el comando. Bash, ksh y zsh escriben en el archivo de historial cuando salen (zsh puede hacerlo más a menudo dependiendo de la configuración).Alternativamente, puede hacer que bash o zsh ignoren las líneas que coinciden con ciertos patrones (esto ya está cubierto por otras respuestas).
Otra posibilidad en zsh es
fc -pempuja la lista del historial actual a una pila e inicia una nueva que no está asociada con un archivo guardado.fc -Psaca esa lista de historial sin guardar de la pila y se olvida por completo.Mientras se ejecuta un proceso, el comando y sus argumentos (y en algunos sistemas también su entorno) se mostrarán en la tabla de procesos (
pssalida). Root puede ver comandos pasados en la base de datos de contabilidad del sistema y puede realizar más registros sin su control. Y probablemente habrá todo tipo de evidencia forense que puede mostrar aproximadamente qué comando ejecutó (como los tiempos de modificación de archivos). Por lo tanto, no obtienes privacidad contra espías determinados.fuente