Parfois, lorsque j'exécute des commandes comme rm -rf XYZ
, je ne veux pas que cela soit enregistré dans l'historique de Bash, car je pourrais accidentellement exécuter à nouveau la même commande par reverse-i-search
. Y a-t-il un bon moyen d'éviter que cela ne se produise?
93
bash
puisse être utilisé pour écrire des scripts shell (d'où la programmation), cet aspect particulier n'a absolument rien à voir avec la programmation (l'histoire est une chose uniquement interactive). Vote de clôture.Réponses:
Si vous avez défini la
HISTCONTROL
variable d'environnement surignoreboth
(qui est généralement définie par défaut), les commandes avec un espace au début ne seront pas stockées dans l'historique (ainsi que les doublons).Par exemple:
Voici ce que
man bash
dit:Voir également:
la source
Dans votre .bashrc / .bash_profile / où vous voulez, mettez
export HISTIGNORE=' *'
. Ensuite, commencez simplement toute commande que vous souhaitez ignorer avec un espace.la source
HISTCONTROL
variable d'environnement, qui n'a pas nécessairementignorespace
défini.HISTCONTROL
contientignorespace
, il n'est en fait redondant que d'inclure «*» dansHISTIGNORE
. Les deux fonctionnent indépendamment.Une utilisation encore meilleure
HISTIGNORE
. Cela vous permet de spécifier un ensemble de modèles à ignorer (tels querm
). C'est mieux (je pense) que de simplement faire passer toute l'histoire/dev/null
.la source
Je sais que ce n'est pas aussi meilleur que les réponses précédentes, mais cela tuera le shell Bash actuel sans rien enregistrer, utile lorsque HISTCONTROL n'est pas défini par défaut, vous avez oublié de le définir, ou pur et simple vous avez oublié de mettre un espace de début et vous venez de saisir certains mots de passe et vous ne voulez pas qu'ils restent définitivement dans l'histoire.
C'est le moyen le plus rapide, et quelque chose comme l'effacement du fichier d'historique n'est pas aussi bon car vous devez le faire en dehors d'un shell d'enregistrement d'historique (connectez-vous en tant qu'utilisateur différent et utilisez su / sudo, créez un travail en arrière-plan, etc.)
la source
Vous pouvez faire l'une des deux choses suivantes:
Ou, commencez la commande par un espace.
la source
ignorespace
définies par défaut.HISTFILE
Cette configuration empêche le stockage de tout historique et n'empêche pas l'ajout de la commande à l'historique en mémoire.Ou
(similaire à la réponse précédente mais plus courte: export HISTFILE = / dev / null)
la source
Au démarrage du shell, je nettoie explicitement l'historique des entrées que je ne veux pas être là. Par exemple, je n'en veux pas
rm -rf
dans l'historique (c'est un traumatisme après avoir supprimé un répertoire plein de résultats traités du jour au lendemain, juste avec un seulArrow-Up
+Enter
:)J'ai mis l'extrait suivant dans mon fichier init (fonctionne avec
.zshrc
, devrait également fonctionner avec.bashrc
)la source