本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、キー入力時の動作設定を確認、変更する「bind」コマンドです。
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はキー入力時の動作の設定を確認、変更する「bind」コマンドです。
bindは、コマンドライン上で特定のキーを入力したときに実行する機能を設定、確認するために使うコマンドです。単独のキーだけではなく、Ctrl+Cといった複数のキー入力の動作も設定できます。特定のキーの名前と、そのキーを押したときに実際に入力されたり、処理されたりする内容の関係をキーバインドと呼びます。
bashシェルはキー入力処理の際、Readlineライブラリを利用しています。通常は特定のキー入力とライブラリの特定の機能を結び付けるReadlineの設定ファイル(inputrc)をシェルが自動的に読み込んでいます。bindを使うと現在の設定内容を確認でき、さらにinputrcの編集内容を即座に反映できます。
bindコマンドは、bashのビルトインコマンドです。このためmanコマンドではなく、helpコマンドで詳細を表示できます。
bind [オプション]
bind [オプション] キー操作: コマンド
※[ ]は省略可能な引数を示しています。
短いオプション | 意味 |
---|---|
-m キーマップ | 定義の際に使用するキーマップを指定する(※1) |
-l | bindで設定可能な関数名(bashの動作)を一覧表示する |
-P | 関数名とキーバインドの設定を一覧表示する(※2) |
-p | 関数名とキーバインドの設定を設定ファイル(inputrc)の書式で一覧表示する |
-S | マクロとキー設定を一覧表示する |
-s | マクロとキー設定を一覧表示する |
-q 関数名 | 指定した関数に割り当てられたキーバインドを表示する |
-u 関数名 | 指定した関数に割り当てられたキーバインドを解除する |
-r キー操作 | 指定したキーやキーの組み合わせに対する割り当てを解除する |
-f ファイル名 | 指定したinputrc書式のファイルからキーバインドなどの設定を読み込む(有効にする) |
-x キー操作:シェルコマンド | 指定したキーやキーの組み合わせを入力したときに指定したシェルコマンドを実行する |
-V | 変数名と設定した値(オプション設定)を一覧表示する |
-v | 変数名と設定した値を設定ファイル(inputrc)の書式で一覧表示する |
※1 キーマップとして選択できるのはemacs、 emacs-standard、emacs-meta、emacs-ctlx、vi、vi-move、vi-command、vi-insert。「bind -m vi-command '"ZZ": emacs-editing-mode'」のように指定する。この指定の場合、次のような動作となる。「set -o vi」などでコマンドラインのキー操作をviスタイルに設定していた場合、ESCキーに続けて大文字のZを2回入力すると、キー操作がEmacsスタイルに変わる。
※2 キー入力と結び付けるよう設定された関数は、"関数名 can be found on キー設定"と表示し、設定されていない関数は、"関数名 is not bound to any keys"と表示する。
「bind -p」で現在のキー設定を一覧表示します(画面1)。キー操作と機能が割り当てられている場合は、「"キー操作": 関数名」のように表示します。関数名はbashの具体的な動作を意味します。
キー操作そのものを文字として入力する場合は「"キー操作": self-insert」、割り当てられていないものについてはコメントとして「# 関数名 (not bound)」のように出力します。キー操作を文字として入力するとは、例えば「a」キーを押すとコマンドラインに「a」を入力するという意味です。
出力の量が多いので、画面1ではheadコマンド(連載第3回)を使って表示しています。
割り当てられていないキー設定を表示から外したい場合は、grepコマンドの「-v」オプションで「"not bound"」を除外するとよいでしょう(画面2)。
bind -p
(現在のキー設定を一覧表示する)
キーバインド以外にもさまざまな変数が、bashのコマンドラインでの動作を定義しています。「bind -v」で現在の設定を一覧表示できます。
出力の量が多いので、画面3ではheadコマンドを使って表示しています。
bind -v
(現在のオプション設定を一覧表示する)
Readline用の設定は、2種類に分かれています。システム全体に対する設定には/etc/inputrc、各ユーザー用には~/.inputrcを使用します。
例えば、bashの補完機能が働く際に大文字と小文字を区別したくない場合は「set completion-ignore-case on」とし、キー入力時のエラー音(ベル音)を鳴らしたくない場合は「set bell-style none」または「set bell-style visible」とします。
なお、ベル音の設定の「visible」とはビジブルベルのことで、ベル音の代わりに端末が一瞬フラッシュします。ビジブルベルに対応しているかどうかは使用している端末(仮想端末)に依存します。
bash起動時には、~/.inputrcを自動的に読み込み、有効にします。ログイン時や端末を開いたときの動作です。新たに設定した内容を試す場合には、「bind -f ~/.inputrc」とすることで、設定ファイルを即座に読み込み、有効にします。
画面4では、「set bell-style none」という設定を~/.inputrcに追加(ファイルがない場合は新規作成)して、bindコマンドで設定を読み込んでいます。
もし好みの状態ではない場合や、キーの割り当てがうまくいかなかった場合は、~/.inputrcをエディタで編集して読み直してみましょう。特にキー割り当てがおかしくなってしまった場合は、~/.inputrcを別の名前に変更、または削除して、ログインし直す(仮想端末を開き直す)とよいでしょう。
bind -f ファイル名
(inputrc書式のファイルから設定を読み込む)
echo set bell-style none >> ~/.inputrc
bind -f ~/.inputrc
(キー入力時のエラー音を鳴らさない)(画面4)
西村 めぐみ(にしむら めぐみ)
PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.