Source accidentelle .bash_history

34

Dans un moment d'éclat, j'ai exécuté la commande source ~/.bash_history. Heureusement, la plupart des commandes utilisent vimpour modifier certains fichiers, mais il y a des commandes effrayantes dans mon historique - déplacer et supprimer des fichiers avec des chemins relatifs.

Heureusement, en ce moment, il est bloqué dans une vimsession, mais si je le suspend ou le quitte, il passe à la suivante. Le fichier historique comprend 1 000 lignes.

Comment puis-je annuler cette commande, à moins de redémarrer la machine?

mdkess
la source
23
C'est de la folie! :)
7
la démence ? C'est Sparta! - attendez, désolé.
Sirex
2
Je ne suis pas seul :)
Alupotha

Réponses:

28

S'il s'agit d'une machine locale, démarrez un nouveau terminal et tuez le shell en question.

S'il s'agit d'une machine distante, lancez ssh et tuez le shell en question.

Carl Norum
la source
15

Vous pouvez appuyer sur Ctrl+ Zou démarrer un sous-shell à l'aide :!bash, puis tuer le shell. Étapes spécifiques:

Ctrl+Z
kill -9 $$

:suspend(ou leurs abréviations acceptables) peuvent fonctionner de manière équivalente à Ctrl+ Z.

unnut
la source
6
Mais si vous :!bash, alors $$vous vous référerez au sous-shell que vous venez de créer. Vous devez utiliser pspour trouver le PID. ... PS Je suppose que c'est, dans une certaine mesure, une question de style, mais s'il n'y a pas besoin de faire des trucs bash-fantaisie, j'utiliserais tout simplement :!sh. Aussi, d'ailleurs, essayez :sh.
Scott
1
Downvoting parce que, comme le souligne le commentaire, cela pourrait donner à quelqu'un juste assez de fausse confiance pour quitter Vim et arroser sa machine.
Parthian Shot