bashショートカットキーのリストを取得するためのマニュアルはありますか?


21

作業を簡単かつ迅速にするために、bashコマンドラインを操作するときに使用するショートカットが多数あります。

のような:

  • ctrl+ L:画面をクリアします
  • ctrl+a / ctrl+ e:行の開始/終了を移動します
  • ctrl+r:文字をほとんど書かずにコマンドの履歴を検索する
  • ctrl+ u/ ctrl+y:行をカット/ペーストします。

そしてもっとたくさん、私が知りたいこと、そしてそれは間違いなく学ぶのに役立つでしょう。

Ubuntuのこれらのショートカットのリストはどこから入手できますか?これらのショートカットをリストしたマニュアルはありますか?

注意:

ショートカットとそのアクションの一覧を1か所で取得したい。短時間でそれらの多くを学ぶことは本当に役立ちます。このようなリストを取得する方法はありますか?ここに答えてくれてありがとう。

回答:


22

デフォルトは、man bash各コマンドの動作に関する詳細とともににあります。キーバインドを変更した場合は、BroSlowの回答を参照してください。

   Commands for Moving
       beginning-of-line (C-a)
              Move to the start of the current line.
       end-of-line (C-e)
              Move to the end of the line.
       forward-char (C-f)
              Move forward a character.
       backward-char (C-b)
              Move back a character.
       forward-word (M-f)
              Move forward to the end of the next word.  Words are composed of alphanumeric characters (letters and digits).
       backward-word (M-b)
              Move back to the start of the current or previous word.  Words are composed of alphanumeric characters (letters and digits).
       shell-forward-word
              Move forward to the end of the next word.  Words are delimited by non-quoted shell metacharacters.
       shell-backward-word
              Move back to the start of the current or previous word.  Words are delimited by non-quoted shell metacharacters.
       clear-screen (C-l)
              Clear the screen leaving the current line at the top of the screen.  With an argument, refresh the current line without clearing the screen.

...

       reverse-search-history (C-r)
              Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

...

       unix-line-discard (C-u)
              Kill backward from point to the beginning of the line.  The killed text is saved on the kill-ring.

...

       yank (C-y)
          Yank the top of the kill ring into the buffer at point.

編集

これらのコマンドはすべてマニュアルの連続したセクションにあるため、から参照できますCommands for Moving。または、このセクション全体をテキストファイルに保存することもできます。

man bash | awk '/^   Commands for Moving$/{print_this=1} /^   Programmable Completion$/{print_this=0} print_this==1{sub(/^   /,""); print}' > bash_commands.txt

(注:これにより、デフォルトのキーボードショートカットのないコマンドを含むセクション全体が印刷されます。)

awkコードの説明

  • (のみ)が発生したらCommands for Moving、変数print_thisを1に設定します。
  • Programmable Completion次のセクションである)の(のみ)オカレンスで、変数を0に設定します。
  • 変数が1の場合、先頭の空白(3つのスペース)を取り除き、行を出力します。

1
これらはデフォルトのショートカットであり、必ずしもOPの実際のシステム上のショートカットではありません。bind -Pより正確になります。

@BroSlow良いコメント。ただし、コマンドが何をするかについてはより冗長なので、答えにはメリットがあると思います。答えとして書いたら、+ 1します。
Sparhawk

@Sparhawk:あなたの答えに+1。1つの場所でショートカットのリストを探しています。あなたがここで答えたように、bashマニュアルがすべてのショートカットについて教えてくれるなら、どうやってそれをまとめるのですか?どのようにしてこのようなリストを取得しましたか?アクションでショートカットを解析し、別のファイルに保存する方法はありますか?私はあなたの返事を待っていることでしょう...
Sauravクマール

bashマニュアルでを検索するとReadline Command Names、このセクションのすべてのコマンドが表示されます。テキストファイルに抽出する短いスクリプトを作成しますが、今は実行できません(数時間で時間があります)。
Sparhawk

@Sparhawk:あなたの答えは単純なgrep filterコマンドを書くのに役立ちました。ここで確認してください。ご協力いただきありがとうございます。私はあなたの脚本を待っていますが.. :)
Saurav Kumar 14

20

オプションを指定してbashビルトインbindを呼び出すことにより、現在のbashシェルのすべてのショートカットをリストでき-Pます。

例えば

bind -P | grep clear
clear-screen can be found on "\C-l".

それらを変更するには、次のようなことができます

 bind '\C-p:clear-screen'

そして、それを永続化するために初期化ファイルに入れます(キーの組み合わせは一度に1つのものにしかバインドできないため、以前のバインドは失われます)。


名前で検索してショートカットキーを取得することは、私にとっては少し珍しいことであり、長いプロセスでもあります。1つの場所でショートカットのリストを取得する簡単な方法はありますか?ご理解ください。このアプローチのための+1けれども...
Sauravクマー

2
@SauravKumar bind -Pはすべてのショートカットを提供します。あなたがバインド/ readlineの機能のためのマッピングを持っていないものを無視して意味ならば、あなたのような何かを行うことができbind -P | grep -v "not bound"

7

次のコマンドは、使用方法とショートカットを示す素晴らしい円柱状の出力を提供します。

bind -P | grep "can be found" | sort | awk '{printf "%-40s", $1} {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'

これにより、次のような出力が得られます。

abort                                   "\C-g", "\C-x\C-g", "\e\C-g". 
accept-line                             "\C-j", "\C-m". 
backward-char                           "\C-b", "\eOD", "\e[D". 
backward-delete-char                    "\C-h", "\C-?". 
backward-kill-line                      "\C-x\C-?". 
backward-kill-word                      "\e\C-h", "\e\C-?". 
backward-word                           "\e\e[D", "\e[1;5D", "\e[5D", "\eb". 
beginning-of-history                    "\e<". 
beginning-of-line                       "\C-a", "\eOH", "\e[1~", "\e[H". 
call-last-kbd-macro                     "\C-xe". 
capitalize-word                         "\ec". 
character-search-backward               "\e\C-]". 
character-search                        "\C-]". 
clear-screen                            "\C-l". 
complete                                "\C-i", "\e\e". 
...

次のコマンドを使用して、この出力をテキストファイルに取得します

bind -P|grep "can be found"|sort | awk '{printf "%-40s", $1} {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}' > ~/shortcuts

ファイルは、$ HOMEディレクトリに作成されます。

説明

  • すべてのショートカットを取得します。

    bind -P
  • 割り当てられていないショートカットをすべて削除します

    grep "can be found"
  • 出力をソートします

    sort
  • 最初の列(関数)を出力し、テキストを揃えます

    awk '{printf "%-40s", $1}
  • これは前のコマンドの一部です。列6+(つまり、ショートカット)を印刷します。

    {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'
  • ショートカットという名前のホームディレクトリにある素敵なテキストファイルに出力を入れます

    > shortcuts

次のコマンドを実行することで、コマンドがどのように機能するかを知ることができます。

bind -P
bind -P | grep "can be found"
bind -P | grep "can be found" | sort

@SauravKumarあなたは私に答えに何かを追加したいですか?
登録ユーザー14

2
あなたの答えとそれをより有意義なものにするための+1は... :)私は逃したし、それは、文全体の意味を変更;)いいえ、あなたは任意のものを追加する必要はありません。あなたはベストを尽くした..
サウラヴクマール14

+1素敵なコマンド!私は未設定のショートカットを含むように拡張されました:bind -P | tail -n +2 | sort | awk '{printf "%-40s", $1} {if ($6 == "any") {printf"\n"} else {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}}'
wjandrea

1

さて、bashマニュアルをフィルタリングすることでショートカットのリストを取得する方法があります。また、正確に各ショートカットが何をするのかを説明します。解決策を見つけるために私を啓発してくれたSparhawkに感謝します。私が必要としていたのは正規表現の使い方を学ぶことでしたが、まだまだ得意ではありませんでした:)

だからここに1行のコマンドがあります:

man bash | grep "(.-.*)$" -A1

出力の小さな抽出を次に示します。

   beginning-of-line (C-a)
          Move to the start of the current line.
   end-of-line (C-e)
          Move to the end of the line.
   forward-char (C-f)
          Move forward a character.
   backward-char (C-b)
          Move back a character.
   forward-word (M-f)
          Move forward to the end of the next word.  Words are composed of alphanumeric characters (letters and digits).
   backward-word (M-b)
          Move back to the start of the current or previous word.  Words are composed of alphanumeric characters (letters and digits).
   clear-screen (C-l)
          Clear the screen leaving the current line at the top of the screen.  With an argument, refresh the current line without clearing the
   previous-history (C-p)
          Fetch the previous command from the history list, moving back in the list.
   next-history (C-n)
          Fetch the next command from the history list, moving forward in the list.
   beginning-of-history (M-<)
          Move to the first line in the history.
   end-of-history (M->)
          Move to the end of the input history, i.e., the line currently being entered.
   reverse-search-history (C-r)
          Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.
   forward-search-history (C-s)
          Search forward starting at the current line and moving `down' through the history as necessary.  This is an incremental search.

ショートカットをファイルに保存するには:

man bash | grep "(.-.*)$" -A1 > bash_shortcuts

それが私が必要とするすべてです。bashに割り当てられたショートカットキーを知りたかっただけで、BroSlowが尋ねたようにキーを再構成していません。

彼らの貢献に感謝します。

誰かがこれを強化したいなら、彼/彼女は大歓迎です。いくつかのキーによって割り当てられたショートカットをリストする方法についてのみ言及しました。したがって、誰かがこの方法を使用して説明が割り当てられていないアクションをリストする方法を知っている場合は、大歓迎です:)


非常に素晴らしい。ただし、唯一の問題は、これが複数行の説明の最初の行のみを印刷することです。また、デフォルトのキーストローク(例:)を使用せずにヘッダーとコマンドをスキップしますdump-macrosが、それが必要な場合もあります。
Sparhawk

1

このコマンドを不適切にする方法でbashマニュアルが変更されていない限り(これはほとんどありません)、次のコマンドはのすべてのデフォルトショートカットを表示しますbash

man bash | grep -A294 'Commands for Moving'

これにより、次のような出力が得られます。

 Commands for Moving
   beginning-of-line (C-a)
          Move to the start of the current line.
   end-of-line (C-e)
          Move to the end of the line.
   forward-char (C-f)
          Move forward a character.
   backward-char (C-b)
          Move back a character.
   forward-word (M-f)
          Move forward to the end of the next word.  Words are composed of alphanumeric characters (letters and digits).
   backward-word (M-b)
          Move back to the start of the current or previous word.  Words are composed of alphanumeric characters (letters  and
          digits).
   shell-forward-word
          Move forward to the end of the next word.  Words are delimited by non-quoted shell metacharacters.
   shell-backward-word
          Move back to the start of the current or previous word.  Words are delimited by non-quoted shell metacharacters.
   clear-screen (C-l)
          Clear  the  screen  leaving  the  current line at the top of the screen.  With an argument, refresh the current line
          without clearing the screen.
   redraw-current-line
          Refresh the current line.

Commands for Manipulating the History
   accept-line (Newline, Return)
          Accept the line regardless of where the cursor is.  If this line is non-empty, add it to the history list  according
          to  the state of the HISTCONTROL variable.  If the line is a modified history line, then restore the history line to
          its original state.
   previous-history (C-p)
          Fetch the previous command from the history list, moving back in the list.
   next-history (C-n)
...

bashマニュアルが変更された場合、このコマンドはニーズに合わせて簡単に変更できます。


よくやった!なぜ私はこのように考えなかったのか.. :)
Saurav Kumar 14

@Patil行数もハードコーディングすることを考えましたが、bashマニュアルではセクションの順序が変更されるのではなく、コマンドセクションの行数が変更される可能性が高いと考えました。どちらかがおそらくありそうもないことに同意します。
スパラフーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.