How do I exit or cancel a bad bash command?
I expect to get some flak for this, but I can't find the answer anywhere. It seems like it should be so obvious. Sometimes, when I type a bad command in a bash terminal, the cursor just jumps down to the next line without any error or anything. I can't tell what I did wrong. It's like I'm stuck in the program. Reenactment:
Me: "Oops! That's not what I meant to type..."
Me: "That didn't work..."
:exit :quit exit quit /exit /quit -exit -quit -wtf???
I know I screwed up but how do I get back to the prompt without closing the terminal?
You can always try the obvious things like
^D(eof), Escape etc., but if all fails I usually end up suspending the command with
^Z(Control-Z) which puts me back into the shell.
I then do a
pscommand and note the PID (process id) of the command and then issue a
kill -9 thePIDif the former didn't work) command to terminate the application.
Note that this is not a tidy (no pun intended) way to terminate the application/command and you run the risk of perhaps no saving some data etc.
An example (I'd have used
tidybut I don't have it installed):
$ 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 + 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 $ + 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
^\ (ctrl-backslash, SIGQUIT) works in some stubborn utilities that don't respond to ^C.
Shh! Don't tell people about the ^\ or they'll start `SIG_IGN`'ing that too, then what will we do?
I'd recommend ^Z, then kill %% to kill the job nicely, then kill -9 %% to kill it harshly if necessary. And using %% instead of using ps to find a pid is much easier.
@godlygeek Can you tell me what %% means in Linux or what kind of thing it is? I searched a lot.
@Noumenon, have a look at `LESS='+/^JOB CONTROL' man bash`. `%%` refers to the "current job".
`kill -KILL ` or `kill -SIGKILL ` is more readable than `kill -9 `