web-dev-qa-db-ja.com

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

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

例: Ctrl+c それはプロセスを殺します、 Ctrl+d そのログアウト、 Ctrl+z プロセスをバックグラウンドに送る...など.

私はいくつかをテストしましたが、どちらもターミナルではないことがわかりました(つまり、gnome-terminalxtermkonsole)固有でもシェル(つまりbashzsh)固有でもあり、ttysでも機能します。

だから、私は知りたい:

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

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

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

stty -aを呼び出すと、特殊文字の現在の値とその他の「端末回線設定」が表示されます。次の例では、intrが Ctrl+Ceofは Ctrl+Dsuspは 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;

FreeBSDのstty -a特殊文字:

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+Esttyを次のように呼び出します(^Eは文字どおり2文字で、サーカムフレックス(^)の後に文字Eが続きます):

stty intr '^E'

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

メモ:

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

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

10
RobertL

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

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

  • Ctrl+a –コマンドラインの先頭に移動
  • Ctrl+e –コマンドラインの最後に移動します
  • Ctrl+k –カーソルからコマンドラインの最後まで削除
  • Ctrl+u –カーソルからコマンドラインの先頭まで削除
  • Ctrl+w –カーソルから単語の先頭まで削除します(つまり、1つの単語を逆方向に削除します)
  • Ctrl+y –カーソルの後に削除ショートカット(上記のような)を使用して切り取られた単語またはテキストを貼り付けます
  • 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には、! (bang)bashコマンドでファンキーなことをすることができます。

  • !! –最後のコマンドを実行
  • !blah –「blah」で始まる最新のコマンドを実行します(例:!ls)
  • !blah:p!blahが実行するコマンドを出力します(これもコマンド履歴の最新のコマンドとして追加されます)
  • !$ –前のコマンドの最後の単語(Alt +。と同じ)
  • !$:p!$が代用する単語を印刷する
  • !* –最後のWordを除く前のコマンド(たとえば、「find some_file.txt / 'と入力した場合)!*は 'find some_file.txt')を提供します
  • !*:p –何を出力するか!*で置き換えます
14
Jesus Cepeda