​​「fish」という超便利なshellの超便利な機能をインストール方法含めご紹介

2021年11月2日

2021年11月2日

bash zsh ksh csh tchなどなど、shellには様々な種類があります。 MacのデフォルトshellはCatalinaへのアップデートとともにbashからzshへと移行していますね。 私は、プライベートでiTerm+zshを使っていたのですが、以前より使いやすいとう噂聞いていたfishを使ってみたところzshには戻れなくなってしまいました。 今回はfishを「これから使う方」または「使い始めた方」向けに、あまり設定変更せずに利用できる超便利な機能インストール方法をまとめました。 ぜひ最後までご覧ください!

shellとは?

エンジニアならご存知の方が多いと思いますが、shellとはカーネルとユーザの間を取り持ってくれるプログラムです。 ユーザは、shellに対してMac標準の「Terminal」過去のブログ記事でご紹介した「iTerm」を使ってコマンドを実行します。 shellはターミナルから受け取ったコマンドをカーネルが理解できるように翻訳し伝える役割と、カーネルからの実行結果をターミナルに返す役割を担っています。 今回は、カーネルとターミナルの間を取り持つ役割をfishというshellにやってもらいます。

fishとは?

Friendly interactive shellの略です! 公式サイトはこちら 冒頭に記載したbashやzshに並ぶshellの種類の一つです。 使ってみるとデフォルトの状態でも補完機能が強力ですぐに使いやすさを実感できました。 また、プラグインを導入することで検索、移動などの便利機能を追加できます。 さらに、テーマをコマンドでインストールできたりGUIでの設定が可能でとても簡単にカスタマイズができます。 こんな感じのFriendly感満載なshellです。使いたくなってきませんか?

便利機能のご紹介

インストールしてすぐ「便利!」と実感できた機能は以下の通りです。
  • シンタックスハイライト
  • 検索機能
  • 移動機能
一つずつ紹介していきます。

シンタックスハイライト

これは、デフォルトで有効になっている機能でインストールしてすぐに使えます。 コマンド入力中に画像のようにハイライトしてくれます。 なので、「exho」のようなタイプミスも、、、 赤くハイライトしてくれるので実行前に気づくことができます。 そして、下記画像のように入力したことのあるコマンドであればグレーでサジェストを表示してくれます。 この状態で「Ctrl + f」を入力するとグレーになっている箇所を一気に補完してくれます。 長いコマンドをいちいちコピペしてきたりせずに済みます!

検索機能

これは、pecoというプラグインを導入することで利用可能になるコマンドです。 通常grepなどで行なっている検索をpecoを使うことでインタラクティブかつ曖昧な検索を可能にしてくれます。 grepの場合検索条件を変更したい時にいちいちコマンドを打ち直す必要がありますが、pecoを使うと、QUERY>のところに検索文字列を入力するとインタラクティブに結果を表示してくれます。 psコマンドや大量の標準出力をパパッと検索できるので非常に便利です。

移動機能

こちらは、zというプラグインを導入することで利用できるコマンドです。 例えば、
$ cd ~/Desktop/luxy/blog/2021/10/tech/kotaro/fish/1/images/title/org
みたいな長ーいパスに移動したい時、zを使うと以下のコマンドで移動することができます。
$ z original
「ゑ…??」最初見た時そう思いました。 これでは、カレントディレクトリのorgに移動してしまいそうですが、zコマンドは以前訪れたことのあるディレクトリに一発で飛んでくれるコマンドです。 実際にパスを無視して飛んでいるのではなく、中の挙動としてはディレクトリの移動履歴からマッチするパスを見つけて移動しています。 なので、訪れたことのないパスには飛ぶことができません。 逆に、一度訪れたパスにはすぐに飛ぶことができる強力なプラグインです。

注意点

shellが変わるということなのでもちろんコマンドや文法の解釈も異なります。 今のところ、あまり違いを感じることはありませんがこちらに異なる点がまとめられていますのでご確認ください。

インストール方法

fishのインストール

インストールと有効化は非常に簡単です。
$ brew install fish
$ fish -v # バージョンが返ってくれば成功です。
$ which fish # パスをひかえておきます。
$ sudo -e /etc/shells # shellの一覧にwhich fishの結果を追加します。
$ chsh -s /usr/local/bin/fish #デフォルトのshellを切り替えます。
ここまでやってターミナルを開き直せば完了です。

プラグインのインストール

プラグインは、先ほど紹介した「peco」や「z」が該当します。 他にもgit関連や別の検索機能などの便利なプラグインがありますのでお好みのものを探してみてください。
$ curl <https://git.io/fisher> –create-dirs -sLo ~/.config/fish/functions/fisher.fish # プラグイン管理用のプラグイン(fisher)をインストール
$ fisher -v # バージョンが返ってくれば完了です。
$ fisher install [インストールするプラグイン]    # e.g.) fisher install jethrokuan/z

最後に

いかがでしょうか?fish使いたくなってきませんか? 私自身使い始めてからあまり時間が経っていないのでまだ使いこなせてはいないのですが、今後さらに便利な機能やプラグインを見つけたら皆様にご紹介したいと考えております。 いろいろ紹介しましたが私が一番感動したのは、インストールが楽ということでした 笑 「shellの切り替えかー面倒臭さそうだなー」なんて思っている方、とりあえず上のコマンドをコピペしてぜひ試してみてください! 以上、最後までご覧いただきありがとうございました。