J'utilise beaucoup Terminal et, parfois, j'exécute des commandes. Ce ne sont pas des choses que je ne veux pas que les autres voient, mais d'autres commandes qui causeraient beaucoup de problèmes si je faisais une flèche accidentellement vers le haut et que je les exécutais accidentellement.
Je me demande donc s’il existe ou si je peux créer une sorte de «mode incognito» de Terminal qui me permettrait, lors de l’exécution d’une commande donnée, d’arrêter d’enregistrer mon historique, puis de commencer à enregistrer uniquement après avoir exécuté une commande. recommencer l'enregistrement de la commande et quitter le 'mode incognito' ou redémarrer simplement le terminal?
Parce que je me retrouve plus tard à retirer des éléments de mon ordinateur .bash_history
, alors que ce serait beaucoup plus facile si j'avais pu arrêter l'enregistrement, ou du moins le faire essayer d'essayer de l'enregistrer quelque part où ce ne serait tout simplement pas possible autorisé à, et finirait juste par ne pas l'enregistrer.
.bash_history
. (Ubuntu 15.04 ruiné Terminal, chanceux c'est une clé USB live.)Réponses:
Exécutez une commande sans la mettre dans l'historique:
Il suffit de mettre un espace avant la commande. Bash ignorera les commandes avec un espace ajouté:
Exemple: Space
echo "Some secret text"
Remarque: cela ne fonctionne que si la
HISTCONTROL
variable est définie surignorespace
ouignoreboth
.Désactiver temporairement l'historique:
set +o history
ou Spaceshopt -uo history
désactiver l'historique.set -o history
oushopt -so history
réactivez-le.Désactiver l'historique pour la session en cours (ne retiendra aucune commande de la session):
Remarque: vous pourrez voir les commandes enfoncées Upjusqu'à la fermeture du terminal.
Supprimer une commande de l'historique:
Courir Space
history | grep "part of your secret command"
Il affichera une liste des commandes précédemment exécutées, dans ce format:
Sélectionnez le numéro d'entrée à gauche de la commande. Vous pouvez le copier avec Ctrl+ Shift+C
Run Space
history -d <number>
où<number>
est le numéro d'entrée pour supprimer l'entrée.Vous pouvez coller ce nombre avec Ctrl+ Shift+V
Autres réponses intéressantes:
la source
history -d
pour supprimer une ligne, cela supprimera le contenu de la ligne, mais vous ne pourrez jamais supprimer le fait que vous avez exécutéhistory -d
(à moins que vous ne l'set +o history
history -d
unset HISTFILE
approche fonctionne également de manière rétroactive pour toutes les commandes qui n'ont pas encore été écrites.bash_history
.Vous pouvez simplement supprimer l'historique d'une session de terminal particulière en ajoutant une commande
history -cw
après avoir travaillé.Ne fermez pas le terminal avant de donner cette commande.
la source
shopt -uo history
devrait le faire mieux.Identifier les variables
HISTFILE
(et autres) n’empêchera pas l’ Upenregistrement de votre historique, il ne le poussera tout simplement pas. Cela peut ou peut ne pas être une chose positive pour vous, mais étant donné que vous en parlez, je suppose que vous voulez quelque chose de mieux. Changer leshopt
paramètre d'historique empêche le déclenchement de tout le mécanisme de l'historique.Vous pouvez réactiver la connexion avec
shopt -so history
(le-s
et-u
sont respectivement définis et non définis).Notez que la commande elle-même sera probablement consignée, donc ajoutez-y un espace pour l'empêcher d'être ajoutée à l'historique avant d'effacer la variable.
la source
Une autre façon de tuer le shell actuel sans vous connecter au fichier d’historique est de faire:
Ceci a pour effet que bash (et probablement d’autres coquilles aussi) envoie le signal SIGKILL à lui-même, le tue immédiatement et l’empêche de rien écrire sur le disque.
la source
Pour désactiver temporairement l'historique des commandes de la session en cours, vous pouvez désactiver temporairement la variable d'environnement HISTFILE.
tant que la session est active, vous pouvez accéder à l'historique comme d'habitude, mais celui-ci ne sera pas enregistré sur le disque.
Pour inverser la même session (toutes les modifications seront enregistrées)
la source
HISTFILE
nouveau la session en cours? Si vous annulez la modification (même après avoir exécuté les commandes secrètes), elles seront stockées dans l'historique lorsque vous quitterez.Vous pouvez modifier les lignes d’historique dans la session actuelle du shell. Si vous vous promenez à travers l' histoire (par exemple , avec Upou Ctrl+ P) et de modifier une ligne sans l' exécuter , seule la version modifiée de la ligne sera enregistrée. Vous pouvez le modifier à votre guise. les bons choix incluent utiliser Ctrl+ Upour effacer totalement la ligne ou utiliser Esc#pour mettre un
#
caractère de commentaire au début.Pour laisser une ligne sans l'exécuter, rappelez-vous de ne pas toucher Return( Enter). Ce que je fais est de revenir à la dernière ligne de l’histoire via Esc>.
(Au lieu de Escsuivi de >, dans la plupart des terminaux, vous pouvez maintenir Altet appuyer >; la même chose vaut pour la Esc#suggestion ci-dessus.)
Remarque: vous ne pouvez pas modifier de manière permanente les entrées de sessions précédentes de cette manière. Ces modifications ne seront pas appliquées
HISTFILE
à la fin de la session.la source
Vous pouvez aussi faire en sorte que .bash_history soit en lecture seule. Je voudrais d'abord vider le fichier puis faire:
la source
Vous pouvez exécuter les commandes sensibles dans une session d'écran, puis détruire la session lorsque vous avez terminé.
Alternativement, vous pouvez garder cette session d'écran vivante mais séparée, et y accéder uniquement lorsque vous voulez réellement pouvoir utiliser la flèche vers le haut pour les commandes autrement dangereuses.
la source
Personnellement j'utilise
mksh
, et ce shell n'a par défaut aucun fichier d'historique. Cela signifie que vous pouvez lancer un autre shell tel quemksh
oudash
(qui vient par défaut) pour exécuter la commande que les utilisateurs ne souhaitent pas voir, et quitter une fois terminé.bash
L'histoire enregistrera seulement que vous avez lancé un shell alternatif et c'est tout.la source
Vous pouvez également utiliser multiplexeur de terminal tel que
tmux
,screen
. Donc, l' histoiretmux
ou l'screen
histoire ne serait pas sauvegardée.la source