Y a-t-il un moyen d'empêcher qu'une commande soit ajoutée à votre historique? J'ai une commande que je veux garder en dehors de mon historique, et je m'en fiche de l'avoir là lorsque je cherche l'historique mémorisé, bien que ce soit moins inquiétant. Est-il possible d'empêcher cela, ou dois-je simplement revenir en arrière et éditer mon fichier d'historique.
mise à jour: je n'avais pas réalisé que cela pouvait être spécifique à un shell. Ma coquille est zsh
. Nous vous invitons à répondre pour d'autres obus afin que les gens sachent comment faire cela dans leur coque.
bash
security
zsh
command-history
xénoterracide
la source
la source
Réponses:
En ZSH :
D'abord insérer
setopt HIST_IGNORE_SPACE
à votre~/.zshrc
. Maintenant, après vous être reconnecté, vous pouvez préfixer les commandes que vous ne souhaitez pas stocker dans l'historiquespace
.Dans le manuel d'utilisation , les 3 options suivantes peuvent être utilisées pour indiquer que certaines lignes ne doivent absolument pas entrer dans l'historique:
la source
| somecommand
preexec
qui peut être utilisée pour cela. S'il renvoie non nul, la commande n'est pas enregistrée dans l'historique.setopt HIST_IGNORE_SPACE
in~/.zshrc
Si vous exécutez la commande encore et encore, vous voudrez peut-être utiliser la fonctionnalité Ignorer l'historique de votre shell. Disons que vous avez secret.server.com que vous voulez ssh to, les fichiers FTP, etc. que vous ne voulez aucune ligne mentionnant secret.server.com sauvegardée:
En
bash
vous mettriezalors que dans
zsh
le paramètre est appeléVous pouvez répertorier plusieurs modèles en les séparant par deux points. Notez que chaque motif est comparé à la ligne d’entrée complète . Vous devrez donc peut-être inclure un *. Par exemple, ce qui suit va exclure
fortune
de l’historique, mais va stockerfortune -l
:Avec HISTIGNORE, rien ne correspondant aux modèles que vous avez énumérés ne sera enregistré dans
.bash_history
/.zsh_history
et même la touche de la flèche vers le haut, qui rappelle normalement votre commande précédente, ne fonctionnera pas si elle correspond à votre modèle.la source
HISTIGNORE="^fortune*"
ignorerfortune -l
mais gardermyfortune
?En bash, utilisez la
HISTCONTROL
variable.Réglez-le sur
HISTCONTROL=ignorespace
(ouHISTCONTROL=ignoreboth
). A partir de maintenant, lorsque vous commencez une ligne par un espace , elle ne sera pas enregistrée dans l'historique. Cela évite d’inclure la commande à ne pas divulguer dans certains fichiers de configuration.Même comme cela, il arrive d’oublier d’ajouter de l’espace puis de vouloir revenir en arrière. Pour supprimer une entrée dans l'historique, utilisez
history -d <index>
avecindex
le numéro trouvé avec lahistory
commande (première colonne).la source
zsh
?Le moyen le plus simple pour une pièce unique est
où
$
représente l'invite du shell initial et$$
représente l'invite du sous-shell. Cela fonctionne dans bash et zsh; en ksh vous avez besoin à laHISTFILE=/notwritable
place. Notez que ce qui compte est la valeur duHISTFILE
moment où le fichier d'historique est écrit, pas le moment de l'exécution de la commande. Bash, ksh et zsh écrivent dans le fichier d’historique lors de leur sortie (zsh peut le faire plus souvent en fonction de la configuration).Alternativement, vous pouvez demander à bash ou à zsh d’ignorer les lignes correspondant à certains modèles (cela est déjà couvert par d’autres réponses).
Une autre possibilité dans zsh est
fc -p
place la liste d'historique actuelle sur une pile et en démarre une nouvelle qui n'est pas associée à un fichier de sauvegarde.fc -P
l’histoire non sauvegardée liste de la pile et l’oublie complètement.Lorsqu'un processus est en cours d'exécution, la commande et ses arguments (ainsi que son environnement sur certains systèmes) s'afficheront dans la table des processus (
ps
sortie). Root peut voir les commandes passées dans la base de données de comptabilité système et peut effectuer davantage de journalisation sans votre contrôle. Et il y aura probablement toutes sortes de preuves médico-légales pouvant montrer à peu près quelle commande vous avez exécutée (telles que les temps de modification de fichier). Donc, vous n'obtenez pas la vie privée contre des oreilles indéterminées.la source