166
84

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

fish 3.0がやってきた

Last updated at Posted at 2018-12-28

とうとうこの時がやってきましたね。

fish 3.0がリリースされました!!
すごい。いいぞ。

fish 2.0がリリースされたのが2013年とからしいので、実に5年ぶりのメジャーアップグレードとなります。

fishってなによ

the friendly interactive shell です。
カスタマイズなしで高機能な補完が効くなど、とにかくユーザーに優しく便利なシェルです。

とりあえず試す

以下よりどうぞ。

GitHub:
https://github.com/fish-shell/fish-shell

Ubuntuであれば以下のコマンドでインストールできます。

sudo apt-add-repository ppa:fish-shell/release-3
sudo apt-get update
sudo apt-get install fish

注目の変更点など

waitコマンドの追加

今まではバックグラウンドジョブを待つwaitコマンドが実装されておらず、
fish-shellによる並行処理の方法
のように面倒な方法を使う必要がありました。

fish 3.0ならばもうその必要はありません。
なぜならば、すでに我々が実装したからです。1

&&||が使える

バージョン2.xでは

$ cmd1 && cmd2

のような書き方ができず、

$ cmd1; and cmd2

と書くことを強いられてきました。
これが嫌でfishを使うのをやめてしまった、という人も多いのではないでしょうか。

しかし、3.0ではとうとう両方の書き方に対応したようです。すばらしい。

mathコマンドの改善

fishにはmathコマンドが存在し、

$ math "2*3-1"
5

などとしてコマンドラインで計算を行うことができました。

元々mathコマンドはbcコマンドのラッパーとして機能していましたが、3.0からはビルトインコマンドに変更になりました。
それに伴ってデフォルトで浮動小数点演算が有効になり、従来では

$ math "3.14/2"
1

となってしまっていたところを

$ math "3.14/2"
1.57

のように、自然な形で演算してくれるようになりました。個人的には結構嬉しい。

キーバインドの設定

従来はconfig.fishbindコマンドを用いてキーバインドを記述する際はfish_user_key_bindings関数内でbindを呼ばなければならないという制限がありましたが、この制限は撤廃され、config.fishに直接bindを記述して良いことになりました。

従来通りfish_user_key_bindingは実行されるため、設定の変更は必要ありません。

おわりに

他にも多くの変更点があるので、気になる人はchangelogを覗いてみると良いと思います。
https://github.com/fish-shell/fish-shell/blob/master/CHANGELOG.md

総じて、かなりイケてるシェルに仕上がっているという印象です。

fishを既に使っている人は3.0にアップグレード、使ってない人は今すぐ乗り換えると吉です。

お魚美味しい。

  1. 弊大学には素晴らしい実験(演習?)があってですね、fishにwaitコマンドを実装したりしました。事の顛末については http://fish2017.hatenablog.com を見てください。

166
84
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
166
84

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?