Plus d'une fois, j'ai accidentellement exécuté plusieurs commandes et pollué mon historique bash. Comment fermer mon terminal sans sauvegarder mon historique bash? J'utilise Fedora.
bash
command-history
Michael Mrozek
la source
la source
set HISTFILE
prochaine fois que je me connecte? (dites simplement si cela est correct ou incorrect)Réponse courte:
Tapez ceci à l'invite:
Cela va tuer immédiatement votre shell sans que celui-ci puisse faire quoi que ce soit , comme intercepter le signal, sauvegarder l'historique, exécuter
~/.bash_logout
, avertir des tâches arrêtées ou de ces bonnes choses.Longue réponse:
Remarque: ces options ne s'excluent pas mutuellement. ils peuvent tous être utilisés à la fois.
Option 1:
Si vous êtes un perfectionniste lorsqu'il s'agit d'encombrer votre fichier d'historique, vous pouvez modifier la
HISTIGNORE
variable pour inclure des globes de commandes que vous ne souhaitez pas enregistrer. Par exemple, si vous ajoutezHISTIGNORE='ls*:cd*'
à votre~/.bashrc
puis n'importe quelle instance dels
etcd
ne sont pas insérés dans votre fichier d'historique.Option 2:
Si vous souhaitez contrôler commande par commande les commandes qui restent en dehors de votre historique, vous pouvez définir
HISTCONTROL='ignorespace'
quelle ligne de commande doit commencer par un espace. Utiliserignoreboth
sera également omettre les lignes répétées. Ensuite, si vous appuyez sur la barre d'espace avant d'entrer une commande, celle-ci ne sera pas affichée dans votre fichier historique.Option 3:
Si vous voulez simplement faire en sorte que lorsque vous fermez le terminal, le shell quitte immédiatement, vous pouvez
trap
indiquer au programme que le programme du terminal envoie au shell (xterm
par exemple,SIGHUP
il attend ensuite que le shell se ferme) et permet de quitter sans sauvegarder l'historique reçoit ce signal. Ajoutez ceci à votre~/.bashrc
:la source
kill -9
de tout sauf des situations désastreuses où tout le reste a échoué.Je suis surpris de voir que personne n'a suggéré
history -c
juste avantexit
. IINM (je ne suis pas un expert) qui fera très bien l'affaire.la source
history -r
relisez le fichier d'historique, l'enregistrement devient donc une opération nuls.Bash utilise deux variables d’environnement pour déterminer le fichier d’historique et le nombre de lignes à écrire à la sortie du shell.
Vous pouvez jeter l'historique de votre session avec l'un de ces éléments (défini pendant la session que vous souhaitez omettre de votre fichier d'historique):
ou
L’une ou l’autre de ces méthodes fonctionne bien dans Bash sur Fedora
la source
Vous ne savez pas trop pourquoi vous vous souciez de votre historique de commandes. Si vous avez souvent besoin de certaines commandes, vous aurez peut-être plus de plaisir si vous définissez des alias pour pouvoir les récupérer avec deux séquences de touches au lieu de devoir les rechercher dans l'historique.
la source
Eli vous a déjà donné la bonne réponse pour Bash qui doit être définie
HISTSIZE=0
.Je voudrais juste ajouter la méthode pour le faire pour l' écran GNU . Appuyez sur
Ctrl+A
(séquence d'échappement d'écran) suivi de:scrollback 0
. Cela supprimera l’historique de défilement. Vous pouvez maintenant faire immédiatement:scrollback 15000
pour réinitialiser la taille du tampon de défilement arrière.la source
screen(1)
?scrollback=0
aussi.Ctrl+a H
niCtrl+a :clear
va supprimer l'histoire. Vous avez besoinCtrl+a :scrollback 0
. Vous pouvez le tester vous-même. Démarrer une nouvelle session d'écran. Maintenant, fais uncat /etc/passwd
. Maintenant, faites l’un des choix ci-dessus -Ctrl+a H
ouCtrl+a :clear
. Maintenant, essayez de copier depuis le tampon d’écran en faisant un donCtrl+a [
suivi d’une flèche vers le haut pour aller jusqu’à voir jusqu’à quelle distance vous pouvez aller pour copier. Si vous avez fait unCtrl+a :scrollback
suivi d'unclear
, vous n'iriez que dans la mesure où vous pouvez voir dans la fenêtre en cours car il n'y aura pas de tampon de défilement.