239 votes

Le "mode incognito" du terminal ?

J'utilise beaucoup Terminal, et il m'arrive d'exécuter des commandes, qui ne sont pas des choses que je ne veux pas que les autres voient, mais plutôt des commandes qui, si j'y accédais par accident et que j'exécutais accidentellement, me causeraient beaucoup de problèmes.

Je me demande donc s'il existe, ou si je peux créer, une sorte de "mode incognito" du terminal qui me permettrait, à l'exécution d'une certaine commande, d'arrêter d'enregistrer mon historique, et de ne recommencer à enregistrer qu'après avoir exécuté une commande de reprise de l'enregistrement de l'historique et quitté le "mode incognito", ou après avoir simplement redémarré le terminal ?

Parce que je me retrouve plus tard à aller enlever des trucs de mon .bash_history alors qu'il aurait été beaucoup plus facile de l'empêcher d'enregistrer à cet endroit, ou du moins de l'empêcher d'essayer d'enregistrer à un endroit où il n'aurait pas été autorisé à le faire et où il aurait fini par ne pas l'enregistrer.

280voto

0x2b3bfa0 Points 7873

Exécuter une commande sans la mettre dans l'historique :

Il suffit de mettre un espace avant la commande. Bash ignorera les commandes précédées d'un espace :

Exemple : Spaceecho "Some secret text"

Note : Cela ne fonctionne que si le HISTCONTROL est définie comme suit ignorespace o ignoreboth .


Désactiver temporairement l'historique :

  • Exécuter Spaceset +o history o Spaceshopt -uo history pour désactiver l'historique.
  • Exécuter set -o history o shopt -so history pour l'activer à nouveau.

Désactiver l'historique pour la session en cours (ne se souviendra pas des commandes de la session) :

unset HISTFILE

Remarque : vous pourrez voir les commandes en appuyant sur Up jusqu'à ce que vous fermiez le terminal.


Supprime une commande de l'historique :

Exécuter Spacehistory | grep "part of your secret command"

Il affichera une liste des commandes précédemment exécutées, dans ce format :

user@host:~$  history | grep pkill
  302  pkill $$
  467  pkill gone-cal
  468  pkill actionaz
  500  pkill chrome
  550  pkill super

Sélectionnez le numéro d'entrée à gauche de la commande. Vous pouvez la copier avec Ctrl + Shift + C

Exécuter Spacehistory -d <number> donde <number> est le numéro de l'entrée pour supprimer l'entrée.
Vous pouvez coller ce numéro avec Ctrl + Shift + V


Autres réponses intéressantes :

43voto

Moithil Biswas Points 723

Vous pouvez simplement supprimer l'historique d'une session particulière du terminal en ajoutant la commande history -cw après avoir travaillé.

Ne fermez pas le terminal avant de donner cette commande.

30voto

Mufaka Points 54

shopt -uo history devrait le faire le mieux.

Nuking the HISTFILE (et al) variables n'empêcheront pas votre Up l'histoire étant enregistrée, il ne la pousse pas sur le disque. Cela peut être ou non une chose positive pour vous, mais étant donné que vous le mentionnez, je suppose que vous voulez quelque chose de mieux. En changeant le shopt Le réglage de l'historique empêche le déclenchement de tout le mécanisme de l'historique.

Vous pouvez réactiver la journalisation avec shopt -so history (le -s y -u sont respectivement activés et désactivés).

Notez que la commande elle-même sera probablement enregistrée. Faites-la précéder d'un espace pour éviter qu'elle ne soit ajoutée à l'historique avant d'effacer la variable.

19voto

dolt Points 329

Une autre façon de tuer le Shell actuel sans se connecter au fichier d'historique est de faire :

kill -9 $$

Cela amène bash (et probablement d'autres shells aussi) à s'envoyer le signal SIGKILL, le tuant sur le champ et l'empêchant d'écrire quoi que ce soit sur le disque.

14voto

Raphael R. Points 3033

Pour désactiver temporairement l'historique des commandes pour la session en cours, vous pouvez désactiver temporairement la variable d'environnement HISTFILE.

unset HISTFILE

Pendant que la session est active, vous pouvez accéder à l'historique comme d'habitude, mais il ne sera pas enregistré sur le disque.

Pour faire marche arrière dans la même session (tous les changements seront enregistrés)

HISTFILE=$HOME/.bash_history

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X