巷で話題? fish shellを使ってみました。

こんにちは! 社内では数少ない、エンジニアではない倉谷です。

最近、驚くことに、Windows 10でBashが動くという、linux kernel 2.6系の頃にReiserFS速いなー(笑)とか思っていたころとは、想像もできなかった時代になってきました。

shellといえば、Bashがデフォルトで主流ですが、社内ではそのままBashを使っている人と、zshrcがとてつもなく長いzshユーザや、聞いたこともないshellを使っている人、あえてcshを使っているドMな人など、いろいろいた気がします。

そんな自分はなんちゃってzshユーザです。デフォルトでクールな見た目にできちゃうので。。。

Screenshot_2016-05-09_05-58-59

そんなことはさておき、ここ数年で少し話題なfish shellを使ってみました。

インストール

(Debian系)

$ sudo apt-get install fish

もしレポジトリにfish shell2.x系がなければ、PPAからインストール:

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

(Gentoo系)

Portageにも2.x系があるので:

# emerge -pv app-shells/fish

インストールできたら、fishを起動

$ fish

カラフルなzshrcに書いていたほとんどのことが、デフォルトで出来る

普段どおりに、ディレクトリに移動したり、ファイルを選択したりするだけでも、とってもカラフルで見やすく、またauto-suggestionというか、オートコンプリートがデフォルトで有効。

Screenshot_2016-05-09_06-42-41

特に、TAB を使ったときの挙動が非常に便利。 Screenshot_2016-05-09_06-43-05

zshの場合、zshrcに autoload -Uz foobar のように設定をしなければいけなかったため、とっても便利です。

論理演算子

bashの論理演算子と言えば、おなじみ echo foo && echo bar echo foo || echo barですが、fishでは、”and”, “or”, “not”を使います。

一応、おなじみの論理演算子を使うと、fishではサポートしてないよ、と教えてくれます。 Screenshot_2016-05-09_07-28-19

これは便利なのかどうか微妙なとこです。確かに分かりやすいといえば分かりやすいですが、&&に慣れていると戸惑うかも。

ウェブインターフェスで設定できる

fishのドキュメンテーションを読んでいるときに、ウェブベースで設定ができると記述があり、目を疑いました。 shellをウェブから設定する!? 一体あなたは何を言っているんだ。 そういえば、インストールの時のsuggested packagesで、apache2やら、lighttpdやら、httpdやら出てきてたなぁ。

とりあえず、ウェブインターフェスを起動してみましょう。

$ fish_config

Screenshot_2016-05-09_06-57-50

これは画期的。 テーマなどいじれます。 さすがにCommand Historyをブラウザで見るのは初。なんだか違和感。

bashではないのを頭にいれておく

fishはbashではないため、 例えば、こういった場合。 bashでは、 Screenshot_2016-05-09_07-16-30 fishでは、 Screenshot_2016-05-09_07-07-48

また、環境変数を設定する場合。

bashでは、

$ export PATH=~/src/bin:$PATH

fishでは、

$ set -gx PATH ~/src/bin $PATH のように設定してあげます。

bash癖がある場合は、少し馴らしておく必要がありますね。

まとめ

今回は、fishを使ってみました。 デフォルトの設定で非常にカラフルで見やすい ウェブブラウザから設定でき、普通に面白い 一方で、 bashで使い慣れていた箇所(論理演算子、環境変数など)が使えないので、少し戸惑う。 さすがにshell scriptをfishで動かす場合はあまりないと思いますが、one-linerなどでfish script?を書くときは気にする必要があります。

その他にも gitと連携させるなど、いろいろできそうなので、遊んでみようかと思います。

気に入ったら自分のshellに設定:

$ chsh -s /usr/bin/fish

ではまた。

[告知] Has-key 勉強会 開催!!

Has-key恒例勉強会行います!!

日時:5/18(水) 18:00~

皆様のご参加お待ちしております!


前回の勉強会では

  • 開発でお客さんとモメないために、現場でできることを考えてみた
  • Rails エンジニアのためのPlay Framework with Scala
  • 量子コンピュータとは 〜RSAの崩壊〜
  • 魚の釣り方渓流編
  • シャアハウスに住んでみた
  • League of Legends というゲームについて

等の発表をして頂きました!

技術的なお話やお仕事のコツなど、皆色々な内容を発表してくれました!

rails_slide


個人的に、すごく面白かったのは量子コンピュータのお話でした。

quantum computer_slide1 quantum computer_slide2

  • 量子コンピュータの仕組み
  • qubitの計算
  • 実現したら暗号破られまくりでこの世の終わり

夢が広がりますね!


今回も自由テーマで開催です。

ご興味を持たれた方は、 kurosawa@has-key.org までご連絡下さい!

もしくは当日飛び入り参加もokです!

それでは当日お会いしましょう!