bashでは、現在の入力をどのようにクリアしますか?


172

bashで次のようなコマンドを書き始めたとします。

$ rm -rf /foo/bar/really/long/path/here

そして、結局これを実行したくないことに気づくでしょう。1つまたは2つのキーストロークで入力をクリアする方法はありますか?

私が最近行っているのは、エコーを前に付けて入力を引用符で囲み(Ctrl + A echo "、、、 Ctrl + E、")、Enter キーを押すことです。より速い方法はありますか?


または、コマンドを貼り付けて、それが間違ったワンライナーだったことに気付いたとします。バックスペースは約20文字で本当に古くなります!
bgStack15 2017年

<kbd> Ctrl </ kbd>-<kbd> C </ kbd>、履歴を保持する場合は、stackoverflow.com
a / 9679852/6521116を

回答:


286
  1. Ctrl- Uを押すと、カーソルの前のすべてが削除されます。削除されたコマンドはバッファに保存されます。Ctrl- Yを押して、削除したコマンドを貼り付けます。

    (オプション:EndまたはCtrl- Eを押して、最初に入力の最後にジャンプします。)

  2. または、Ctrl- Cを押して、入力中の内容を中止します。


28
注意点はあります:Ctrlキーを押しながらCは、現在のプロンプトを殺す新しいプロンプトを起動し、1への戻りコードを設定します
user716468

14
慣れないで、Ctrl-Uを使用してください。Ctrl-Cはbashではそれほど悪くありませんが、たとえばmysqlクライアントプロンプトがある場合、Ctrl-Cはサーバーから切断され、これは本当に煩わしいものです。
クリスチャン

1
多くのシステムでは、これまでに入力をkillする端末「kill」文字もあることに注意してください。多くの場合、それはcontrol-Xです。で確認できstty -aます。これは、ターミナルコントロールをアクティブに変更していないすべてのプログラムで機能します。
Jonathan Leffler、2015年

Ctrl-Aに続いてCtrl-Kも機能します。「killed」テキストが保存され、Ctrl-Yを使用して貼り付けることができます。これらのキーストロークは、実際にはread lineライブラリから来ています:cnswww.cns.cwru.edu/php/chet/readline/rluserman.html ..ユーザーインターフェイスがライブラリを使用しているツール(実際にはEmacs、bash、等..)。.inputrcファイルを編集して、その動作をカスタマイズできます(詳細については、上記のリンクを参照してください)。
rkachach 2015

93

Ctrl+を試してくださいU。これにより、入力行がクリアされます。


7
おかげで、私はほぼこれを答えとして受け入れました。しかし、カーソルの前の入力のみをクリアすることがわかりました。場合によっては、コマンドを編集している最中なので、単に "現在の入力を破棄する"のではなく、Ctrl + UではなくCtrl + Cを覚えておきます。
user85509 2009年


21

Ctrl- UCtrl- Kトリックも行います。

Ctrl- U行の先頭からカーソルまでのすべてを削除しますCtrl- Kカーソルから行の終わりまでのすべてを削除します (そのうちの1つだけを使用すると便利な場合があります。)


13

これを行うには2つのオプションがあります

ctrl+c -これは、カーソルがどこにあっても、行全体をクリアします。

ctrl+ u-カーソルの位置から先頭までの行をクリアします。


2
「Cu(またはCeとCu)を使用すると、クリアした内容がバッファーに保存され、後でCyを使用して貼り付けることができると考えてください。」Markisismeより簡単な単一のコマンドはctrl + _です。 stackoverflow.com/questions/1056440/…john kugによる回答-stackoverflowを開始したばかりなので、コメントにコメントを追加するのに十分なポイントがありません。
vks 2009年

9

良いショートカットはを押すことEsc#です。#文字を付加し(したがって、行をコメントにします)、Enterキーを押します。その後、まだコマンドが必要だと判断した場合でも、コマンドは履歴に残ります:)


3
ほとんどの端末では、これはAlt +#と同じで、1つの(コード化された)キーストロークになります。
Dolda2000 2017年

シンプルでありながら賢い解決策であり、これはコマンドをキャンセルするためのよりユーザーフレンドリーな方法だと思います。まさに私が探していたもの:)
Cas

9

bashでEscプラスBackspaceを押すと、カーソルの位置までのすべてがクリアされます。

(Cygwinでは、これにより入力が次の単語までクリアされます。単語はスペース、アンダースコアなどで区切られます...)


3

使用していることを考えてみましょうCtrl- U(またはCtrl- E当時とCtrl- U)は、バッファ内にクリアするもの格納することはあなたが使用して、後でそれを貼り付けることができるようにCtrl- Y



3

これはニットの答えの拡張ですハッシュを前に付けることにより、コンソール履歴に行を格納する。誤って上書きしたり、カットラインを参照用に表示できないなど、クリップボードの欠点を克服します。

コメント行と新しいプロンプトを返す

どちらかのキーショートカットを使用します。

  • Esc#
  • Alt+#

#行の先頭にハッシュ文字が付加されるため、行全体がコメントになります。ユーザーがEnterキーを押したかのように、新しいプロンプトを返します。例えば

$ #rm -rf /foo/bar/really/long/path/here
$

コメント行を取得する

コンソール履歴から古い行を回復するには、次のいずれかのショートカットを使用します。

  • Up
  • Ctrl+p

目的の行が表示されるまでキーショートカットを繰り返します。


クイックハッシュプレフィックスの削除

行のハッシュ#プレフィックスを削除するには、いくつかの異なるオプションを使用できます。

最初の文字を削除して、すぐにコマンドを実行します。

  • Esc1Esc#
  • Alt+ -Alt+#

次のコマンドを実行せずに、カーソルを移動して最初の文字を開始して削除します。

  • HomeDelete
  • Ctrl+ aCtrl+d

2

現在の行を削除するには、次を試してください:

Ctrl- XCtrl-U

別の方法として、次のものを使用できます。

Esc-D

〜/ .inputrcで必要です:

"\ed": kill-whole-line 

参照:http : //codesnippets.joyent.com/posts/show/1690


エスケープキーだけで行全体をクリアしたい場合は、追加します"\e\e": kill-whole-line(ただし、escキーを2回押す必要があります)
binaryfunt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.