不正なbashコマンドを終了またはキャンセルするにはどうすればよいですか?


41

私はこれについて多少の期待を寄せていますが、どこにも答えが見つかりません。それはとても明白なはずのようです。ときどき、bashターミナルで間違ったコマンドを入力すると、カーソルが次の行にエラーや何もせずにジャンプするだけです。何を間違えたかわかりません。私はプログラムにこだわっているようです。再現:

$ tidy

私:「おっと!それは私がタイプしたものではない...」

:q

私:「うまくいかなかった...」

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

失敗したことは知っていますが、端末を閉じずにプロンプ​​トに戻るにはどうすればよいですか?



:q実際に私のために働いた。それはVimのコマンドではありませんか?
レッドピース

回答:


53

^C^D(eof)、Escapeなどの明白なことをいつでも試すことができますが、すべてが失敗した場合、通常は^Z(Control-Z)でコマンドを中断し、シェルに戻ります。

私はその後行うpsコマンドを、コマンドのPID(プロセスID)を注意し、問題kill thePIDkill -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

8
それでおしまい!!^ Zが助けになります。どうもありがとうございます。
デビッドケネディ

3
^ \(ctrl-backslash、SIGQUIT)は、^ Cに応答しない頑固なユーティリティで動作します。
-mrb

2
しー!^ \につ​​いて人々に話さないでください。そうしないと、彼らもそれを開始SIG_IGNします。
アランカレー

1
@godlygeek Linuxで%%が何を意味するのか、それがどのようなものか教えてください。よく検索しました。
ヌメノン

1
@Noumenonをご覧くださいLESS='+/^JOB CONTROL' man bash%%「現在のジョブ」を指します。
ワイルドカード

12

Ctrl- DまたはCtrl-を押してみてくださいC。失敗した場合、プロセスを強制終了します。

tidyあなたが言及したコマンドで試してみてくださいCtrl- D動作します。


CTRL+CWindows CMDにも適しています。
T.Todua

7

別の解決策(まだ説明していません)は、+ SIGQUITを使用して信号を送信することですctrl\

それは強いよりもctrl+c


2

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

3
Ctrl + Dはファイルの終わりであり、直接終了するわけではありません。
ジル 'SO-悪であるのをやめる
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.