我预计这会受到一些批评,但我在任何地方都找不到答案。看起来应该是这么明显。有时,当我在 bash 终端中输入错误的命令时,光标只是跳到下一行,没有任何错误或任何内容。我无法说出我做错了什么。就好像我被困在程序里一样。重演:
$ tidy
我:“哎呀!这不是我要输入的内容……”
:q
我:“那没用……”
:exit
:quit
exit
quit
/exit
/quit
-exit
-quit
-wtf???
我知道我搞砸了,但是如何在不关闭终端的情况下返回提示符?
答案1
你总是可以尝试一些显而易见的事情,比如^C
、^D
(eof)、Escape 等,但如果全部失败,我通常最终会使用 (Control-Z) 暂停命令,^Z
这会让我回到 shell。
然后,我执行一个ps
命令并记下该命令的 PID(进程 ID),然后发出一个kill thePID
(kill -9 thePID
如果前者不起作用)命令来终止应用程序。
请注意,这不是一个整齐的(没有双关语意图)终止应用程序/命令的方法,您可能会面临无法保存某些数据等的风险。
一个例子(我已经使用tidy
但没有安装):
$ 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
答案2
尝试按Ctrl-D或Ctrl- C。如果失败,则终止该进程。
尝试使用tidy
您提到的命令,Ctrl-D有效。
答案3
另一个解决方案(尚未提及)是SIGQUIT
使用ctrl+发送信号\
这是更强比一个ctrl+c
答案4
CTRL+D == exit shell command
和
CTRL+ C == terminate the current process, Of course may be the given software handle it and
CTRL+D doens't work
当然,kernel signal
如果您想了解更多信息,他们会制作一个:
man 7 signal