コマンドラインのキーボードショートカットは何ですか?


10

コマンドライン/ターミナルで使用するキーボードショートカットについて話しています。

例:Ctrl+ cプロセスを強制終了するCtrl+ dログアウトするCtrl+ zプロセスをバックグラウンドに送る...など

私はいくつかをテストし、彼らはどちらの端末(すなわちであることを発見したgnome-terminalxtermkonsole)特定やシェル(すなわちbashzshで)特定の、彼らも仕事ttyの。

だから、私は知りたい:

  • 誰がこれらのショートカットを提供していますか?
  • それらをどのようにリストして修正/定義できますか?

他のbind -pものhelp bindと同様に、リストアップしてみてください
Costas

回答:


10

カーネルのターミナルドライバー(termios)は、プロセスに信号を送信したり、ファイルの終わりを送信したり、文字を消去したりするために入力できる特別なキーを解釈します。これは基本的なUnixカーネル機能であり、ほとんどのUnixおよびLinux実装で非常によく似ています。

このsttyコマンドは、termios特殊文字、および端末回線ドライバーの他のパラメーターを表示または設定します。

呼び出しstty -aて、特殊文字の現在の値とその他の「端末回線設定」を確認します。次の例では、intris Ctrl+ Ceofis Ctrl+ Dsuspis Ctrl+であることを確認できますZ。(特殊文字の設定のみを表示するために他の出力を削除しました):

stty -a GNU / Linuxの特殊文字:

intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;

stty -a FreeBSDの特殊文字:

cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ^@; eol2 = ^@;
        erase = ^?; erase2 = ^H; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;

特殊文字の値を変更するには、たとえば、割り込み文字をCtrl+ CからCtrl+ に変更するには、次のようにE呼び出しsttyます(^E文字どおり2文字で、サーカムフレックス(^)の後に文字E):

stty intr '^E'

詳細については、sttyおよびのマニュアルページを参照してくださいtermios。GNU / Linuxでは、tty_ioctlmanページも確認できます。

ノート:

intrキー(Ctrl+ Cデフォルトでは)、実際にプロセスを殺すが、(割り込み信号を送信するために、カーネルが発生していないSIGINTプロセスグループ内のすべてのプロセスに)。プロセスはシグナルをキャッチまたは無視するように調整できますが、ほとんどのプロセスは終了します。これはデフォルトの動作です。

Ctrl+がdログアウトする理由は、端末回線ドライバがシェルの標準入力でEOF(ファイルの終わり)を送信するためです。シェルは、標準入力でファイルの終わりを受け取ると終了します。


@ Sukminder、FreeBSDでは、POSIX -aオプションがに追加されましたstty
RobertL 2016年

私は試しstty intr '^E'てみましたが(一時的に)現在の端末/端末のみで機能します(設定)。どうすればグローバルかつ永続的に変更できますか?
Pandya 2016年

stty$ HOME / .profile、$ HOME / .bashrc、またはその他のシェル起動初期化ファイルを呼び出すのが最善の方法だと思います。
RobertL 2016年

私は試してみました:ターミナルでは動作しますが、効果はありませんtty
Pandya

何を試しましたか、何を見て、どういう意味ttyですか?多分それは新しい質問かもしれませんか?
RobertL 2016年

14

http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/から

コマンド編集のショートカット

  • Ctrl+ a–コマンドラインの先頭に移動
  • Ctrl+ e–コマンドラインの最後に移動
  • Ctrl+ k–カーソルからコマンドラインの最後まで削除
  • Ctrl+ u–カーソルからコマンドラインの先頭まで削除
  • Ctrl+ w–カーソルから単語の先頭まで削除(つまり、1単語逆方向に削除)
  • Ctrl+ y–カーソルの後に削除ショートカット(上記のものなど)の1つを使用して切り取られた単語またはテキストを貼り付けます
  • Ctrl+ xx–コマンドラインの開始と現在のカーソル位置の間を移動する(そして再び戻る)
  • Alt+ b– 1単語後ろに移動する(またはカーソルが現在位置している単語の先頭に移動する)
  • Alt+ f– 1単語前に移動(またはカーソルが現在位置している単語の終わりに移動)
  • Alt+ d–カーソルで始まる単語の最後まで削除(カーソルが単語の先頭にある場合は単語全体)
  • Alt+ c–カーソルで始まる単語の終わりまで大文字にする(カーソルが単語の先頭にある場合は単語全体)
  • Alt+ u–カーソルから単語の終わりまで大文字にする
  • Alt+ l–カーソルから単語の終わりまで小文字にする
  • Alt+ t–現在の単語を前の単語と入れ替えます
  • Ctrl+ f– 1文字進む
  • Ctrl+ b– 1文字後ろに移動
  • Ctrl+ d–カーソルの下の文字を削除
  • Ctrl+ h–カーソルの前の文字を削除
  • Ctrl+ t–カーソルの下の文字を前の文字と入れ替えます

コマンド呼び出しのショートカット

  • Ctrl+ r–履歴を逆方向に検索
  • Ctrl+ g–履歴検索モードからの脱出
  • Ctrl+ p–履歴内の前のコマンド(つまり、コマンド履歴をさかのぼります)
  • Ctrl+ n–履歴の次のコマンド(つまり、コマンド履歴を先に進む)
  • Alt+ .–前のコマンドの最後の単語を使用

コマンドコントロールのショートカット

  • Ctrl+ l–画面をクリア
  • Ctrl+ s–画面への出力を停止します(長時間実行する詳細コマンドの場合)
  • Ctrl+ q–画面への出力を許可する(以前に上記のコマンドを使用して停止した場合)
  • Ctrl+ c–コマンドを終了する
  • Ctrl+ z–コマンドを一時停止/停止

バッシュバング(!)コマンド

Bashには、!(強打)bashコマンドでファンキーなことをできるようにします。

  • !! –最後のコマンドを実行する
  • !blah – 'blah'で始まる最新のコマンドを実行(例:!ls)
  • !blah:p!blahが実行するコマンドを出力します(これもコマンド履歴の最新のコマンドとして追加されます)
  • !$ –前のコマンドの最後の単語(Alt +と同じ)
  • !$:p!$が置換する単語を出力します
  • !* –最後の単語を除く前のコマンド(たとえば、 ' find some_file.txt / 'と入力すると、!*は ' find some_file.txt ' を返します)
  • !*:p!*が代用するものを出力する

1
@Sukminderいいえ、Ctrl + Sは出力を停止します。Ctrl + Zと混同しているようです。
Gilles「SO-邪悪なことをやめよ」

Emacsも参照してください。
エーリヒ

いいね!そして、bashからLinux上のSIGKILLに定義され^Uているに到達する方法はありstty -aますか?できれば、readlineの定義を解除せずに(おそらく3番目のmod / metaキーを使用して)。ctrl + u readlineバインディングによってのみシャドウイングされていると思いますか?
nyov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.