コマンドラインに戻るために使用するCtrl + Cは正しくありませんか?


27

使用しているときにtail -fシェルに戻りたいときは、常にを使用しますCTRL+C。または、コマンドを入力しているときにコマンドを中止して最初からやり直したい場合は、単にCTRL+C空のコマンドラインプロンプトに戻ります。これは悪い習慣と見なされますか?私は時々、何かから脱却するためのより良い方法があるかもしれないと感じますが、本当にわからない。


6
部分的に入力されたシェルコマンドをキャンセルするには、Control-UまたはDelete(tty設定とキーバインドに応じて)を使用できますが、Control-Cを使用しても何も問題はありません。
キーストンプソン

@KeithThompson Ctrl + Uに感謝、私はその1つに気づいていませんでした:
パトリック

レコードについては、Cuは入力されたコマンドを実際にキャンセルせず、ペーストバッファーに移動します(一部のプログラムの「カット」機能に似ています)。
クリスダウン

回答:


36

Ctrl+ CプログラムにSIGINTを送信します。これにより、プログラムにプロセスの中断(および終了)を指示します。ほとんどのプログラムはこれを正しくキャッチし、正常に終了します。したがって、はい、これはほとんどのプログラムを終了する「正しい」方法です。

他の信号をプログラムに送信するためのキーボードショートカットは他にもありますが、これが最も一般的です。


9
ユーザーからの入力を読み取るプログラムにはCtrl + Dもあります。Ctrl + Dは、STDINをプログラムに閉じます。シェルを正常に終了するには、これも使用できます(exitと入力するのとまったく同じです)。
パトリック

2
@Patrick Ctrl + Dは、実際にファイルの終了インジケーターをストリームに送信します。適切に応答するのはプログラム次第です(通常、ファイルストリームを閉じます)。
クリスS

それがSTDINを閉じることです。パイプ/ストリームを閉じずにEOFを取得することはできません。
パトリック

9
パトリック、3つの点で間違っています。まず、Control + Dはパイプに対してこの意味を持ちません。2番目:EOF特殊文字は何も閉じません。これにより、現在のシステムコールからゼロバイト(ラインバッファが空であると仮定)が1回返されread()ます。次read()のものは影響を受けません。3番目:過去数十年のほとんどのシェルプログラムや、GNUなどのライブラリを使用する他のプログラムなど、行規律を非標準モードにするプログラムには、これは当てはまりませんreadline
JdeBP


11

入力中に長いコマンドを中止するために、Enterを押す前に行の先頭にジャンプしてコメント記号を挿入することがあります。

Home#Enter

Pos1#Return

これは、たとえば、長いパスでコピーコマンドを入力し、その間に最初にディレクトリを作成する必要があるが、その後コマンドを繰り返したい場合に便利です。次に、履歴から取得してハッシュを削除し、入力するだけです。

Bashでは、ショートカットを使用できます

Alt+#

コメントで指摘されているように、コマンドを再確認します(ありがとう、@ Zorawar)。


6
Ctrl-Aホームロウから指を離さずに使用することもできます。
ディートリッヒエップ

1
そしてCtrl-E途中で、最後まで行きます。
デイブ

@Dave:その通りですが、コマンドを確認するためにEnterキーを押すために最後まで移動する必要はありません。コマンドラインはエディターではなく、改行を挿入する場合があります。
ユーザー不明

2
bashでは、を押すだけで同じことを実現できます。Alt-#コメントを入力してコマンドを実行します(したがって、履歴に追加します)。
ゾラワー

8

一般的に、Ctrl+の使用Cは、プログラムが(設計上、またはフリーズしたか使用できなくなったために、より頻繁に)対話形式で終了する方法を提供しない場合に適しています。インタラクティブモードでは、本当に必要なキーコンボはCtrl+ DでありEOF、入力の終了を示すを送信することに注意してください。


1

Bashを使用している場合は、Ctrl-を使用して「現在のジョブをバックグラウンドに置く」ようにZ入力bgすることもできます。


0

@Patrickが受け入れられた答えのコメントで述べたように、

Ctrl+Dユーザーからの入力を読み取るプログラムもあります。Ctrl+DSTDINをプログラムに閉じます。

これはCtrl+C、使用後にコマンドラインを取り戻すことができなかったときに役立ちました>>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.