web-dev-qa-db-fra.com

Comment quitter ou annuler une mauvaise commande bash?

Je m'attends à obtenir un flak pour cela, mais je ne trouve la réponse nulle part. Il semble que cela devrait être si évident. Parfois, lorsque je tape une mauvaise commande dans un terminal bash, le curseur passe simplement à la ligne suivante sans aucune erreur ou quoi que ce soit. Je ne peux pas dire ce que j'ai fait de mal. C'est comme si j'étais coincé dans le programme. Reconstitution:

$ tidy

Moi: "Oups! Ce n'est pas ce que je voulais taper ..."

:q

Moi: "Ça n'a pas marché ..."

:exit
:quit
exit
quit
/exit
/quit
-exit
-quit
-wtf???

Je sais que j'ai foiré, mais comment revenir à l'invite sans fermer le terminal?

44
Big McLargeHuge

Vous pouvez toujours essayer les choses évidentes comme ^C, ^D (eof), Escape etc., mais si tout échoue, je finis généralement par suspendre la commande avec ^Z (Control-Z) qui me remet dans le Shell.

Je fais ensuite une commande ps et je note le PID (id du processus) de la commande, puis j'émets un kill thePID (kill -9 thePID si le premier ne fonctionnait pas) pour terminer l'application.

Notez que ce n'est pas un moyen bien rangé (sans jeu de mots) de terminer l'application/la commande et vous courez le risque de ne peut-être pas enregistrer certaines données, etc.

Un exemple (j'aurais utilisé tidy mais je ne l'ai pas installé):

$ gnuplot

    G N U P L O T
    Version 4.2 patchlevel 6 
     ....
    Send bug reports and suggestions to <http://sourceforge.net/projects/gnuplot>

Terminal type set to 'wxt'
gnuplot> 
gnuplot>               #####  typed ^Z here
[1]+  Stopped                 gnuplot
$ ps
  PID TTY          TIME CMD
 1681 pts/1    00:00:00 tcsh
 1690 pts/1    00:00:00 bash
 1708 pts/1    00:00:00 gnuplot
 1709 pts/1    00:00:00 ps


$ kill 1708            ###### didn't kill the command as ps shows

$ ps
  PID TTY          TIME CMD
 1681 pts/1    00:00:00 tcsh
 1690 pts/1    00:00:00 bash
 1708 pts/1    00:00:00 gnuplot
 1710 pts/1    00:00:00 ps
$ kill -9 1708           ### -9 did the trick
$ 
[1]+  Killed                  gnuplot

$ ps
  PID TTY          TIME CMD
 1681 pts/1    00:00:00 tcsh
 1690 pts/1    00:00:00 bash
 1711 pts/1    00:00:00 ps
55
Levon

Essayez d'appuyer sur Ctrl-D ou Ctrl-C. S'il échoue, arrêtez le processus.

Essayer avec la commande tidy que vous avez mentionnée, Ctrl-D travaux.

13
Renan

Une autre solution (non mentionnée déjà) consiste à envoyer le signal SIGQUIT en utilisant ctrl+\

C'est plus fort qu'un ctrl+c

7
Gilles Quenot

CTRL+D == exit Shell command

et

CTRL+C == terminate the current process, Of course may be the given software handle it and CTRL+D doens't work

Bien sûr, ils produisent un kernel signal si vous voulez en savoir plus, lisez:

man 7 signal
4
PersianGulf