インタラクティブシェル「fish」が特に便利なのは、その補完機能の賢さにある。補完機能とは、ユーザーが過去に入力したコマンドやパス情報などを基に、入力するであろう文字列を代わりに展開してくれる機能だが、fishの機能はほかのインタラクティブシェルの機能よりも気が利いているし、押し付けがましくない。実に良いバランスで実装されている感がある。
具体的な操作例を見ていこう。例えば、次のように配置されたディレクトリにいるとする。
ここで「cd 2」と入力すると、次のように薄い色で「0170417」という文字列が表示される。
これは、過去にこのディレクトリに移動したことがあるという履歴から「このディレクトリへ移動するんじゃないか?」とfishが候補として表示したものだ。この状態で「Ctrl-F」キーを押すと、候補が展開されて次のようになる。
また、初めてのディレクトリであっても、可能な場合には補完候補が表示される。
「Ctrl-F」で補完候補を展開すると、次のようになる。
この機能(特に以前移動したディレクトリに移動する際の動き)は、ほかのインタラクティブシェルでは「コマンド履歴検索機能」といった名前で呼ばれているものに近い。そうしたインタラクティブシェルでは、コマンド履歴検索を実施するためのショートカットキーを押す必要があるが、fishの場合は自動的に表示される。しかも、カレントディレクトリを加味した補完候補が表示されるので、ほかのインタラクティブシェルよりも扱いやすい。
TABキーを使ったインタラクティブな補完
fishではTABキーによってインタラクティブに補完していくこともできる。この辺りは、ほかのインタラクティブシェルの動作とも似ているところだ。例えば、日付のディレクトリがたくさんある場所でTABキーを押すと、次のように補完できるところまで候補が展開される。
さらにTABキーを押すと、候補がリスト表示される。
続けて1回TABキーを押すと、さらに多くの候補がリスト表示される。
ここからしつこくTABキーを連打していくと、表示された候補リストの上をカーソルが移動するようになる。この移動は矢印キーを使っても行うことが可能だ。ともかく補完候補を出したい場合には、TABキーを連打してみればよい。
fishはここから候補を絞り込むことも可能だ。例えば、おもむろに「09」と入力すると補完候補のなかから「09」を含むもののみが表示されるようになる。
エンターキー(リターンキー)を押せば、選択中の候補を展開することができる。
つまり、fishを使う際、入力候補を表示させたい場合はまずTABキーを押す。何度か押すと、さらに候補が表示されたり、別の情報が表示されたりする。候補が薄い文字列で浮かんできた場合には、「Ctrl-F」を押せばそれを展開可能だ。TABキーと「Ctrl-F」キー、今回はともかくこの2つのキーだけ覚えてもらえればよい。ぜひ一度使って、その便利さを体感してもらいたいと思う。