Help us understand the problem. What is going on with this article?

初心者がShellを知りFish〜Fisherを導入するまで

More than 1 year has passed since last update.

初心者向けです。

最近Shellについていろいろ勉強をしています。

掲題の通り、Shellって何?からはじまり、Fishについて、それからプラグインマネージャ初挑戦、Fisherについての考察をメモ。


Shellって何?

さて、私の場合はまずここからでした。

OSの中にはカーネルと呼ばれる中心機能があるわけですが、「核」なので私たちが直接対話することはできません。

そこでカーネルさんとお話しするためのツールとしてShellがあります。私たちにインタフェースを提供してくれるソフトウェアです。

てことはターミナルのことかー、って思ったけどまたちょっと違ったみたい。ターミナルはあくまで外側の端末、黒い画面のアレを指します。
私たちがターミナルで打ち込むものに、Bash、Zsh、Fish等のバリエーションがあるわけです。

:pushpin: 2016.2.22追記

コメントにて補足を頂きましたのでそちらもご参照ください。

Fishってどう?

私のPCにはBashが入っています。

これは右も左もわからない時に色々教えてくれた先輩がBashユーザーだったのでそのまま‥という理由なのですが、自分でいろいろするようになったら、Fishくんが気になってきちゃいました :flushed:

なぜかというと、こんな魅力的なやつなんです。

  • インストールが簡単!
  • ほとんど設定しなくても充分使える。
  • 補完機能(候補をあげたり、予測変換的な機能)の性能が高い。
  • コマンドでの色つけ機能(エラーは赤とか)がわかりやすい!

ユーザーフレンドリーというだけあって、イイ :smiley: !このへんのポイント、初心者には嬉しいですよね。

Fish Shellを使おう

Fish Shellの導入は、すでにたくさんの素敵な記事があるのでここで細かくは触れませんが、macからはhomebrewで簡単にインストールできますし、英語ですが公式ドキュメントも充実しておりチュートリアルもありました。

@futoase さんのいいからfish shellつかってみろ
@mtwtk_man さんのfish-shellを使ってみませんか

こちらの記事がわかりやすくてとても参考になりました :star2:

個人的に嬉しいと思ったのは

親切なヘルプメッセージ
fishに於けるエラーメッセージは、何が間違っていたのか、どうすればいいのかを実際にユーザへ伝えるように設計されている。

foo=bar
fish: foo=bar というコマンドはありません。もしかしたら“set 変数 値”という意味ですか? 変数値を設定する情報を見るためには、“help set”と入力
し、ヘルプセクションを見て下さい。

echo ${foo}bar
fish: {$変数名}という意味ですか?文字は変数の初めに用います。$に続くブラケットは変数名の一部としては許可されておらず、変数名が0文字になっ
しまいます。fishに於ける変数展開についての情報は“help expand-variable”を入力して下さい。

echo $(pwd)
fish: (コマンド)という意味ですか? fishに於いて文字$は変数値を利用する
ときのみ利用します。fishに於けるコマンド代用に関する情報は、“help expand-command-substitution”を見て下さい。

(以上wikipedia-fish(friendly interactive shell)より抜粋)
というように、説明、ヘルプ、補完に重点を置いているところです。

機能を追加しよう

初心者としてはこのへんで既に結構やった感があったりするのですが、更に一歩進んでカスタマイズできるともっと便利になります。機能を追加したり、ちょっとかっこいいグラフィックを使えるとうれしいですし。

で、よほど限定的に機能を絞りたくない限りは、一括管理できるフレームワーク or プラグインマネージャ後述)を使ったほうがいいです。これらは、便利な機能を使えるようになるだけでなく、そのインストールや更新を一括で行ってくれるものです。

逆に言えば、便利なプラグインを見つけても、手動で更新したり、‥zip形式やtgz形式で配布されているものを個別に取り込んだり、GitHubからクローンして自分でローカルのディレクトリに‥ :mask: :speech_balloon:

そうですね。入れましょう。

Fisher

さて、Fishではoh-my-fishというフレームワークがありますが、著作権問題があったらしく、一時停止していました :open_mouth:(2016.2月現在)。
そこで最近台頭してきたプラグインマネージャFisherを覗いてみたところ、GitHubに日本語に対応したクイックスタートガイドを発見。よし、これにしよう。
ちなみに上記クイックスタートガイドの一番下に「Installing Fish Shell」のリンクもありました。

Fisherで何ができるの?

具体的に、導入したら何が良いの?というところですが、Fisherの場合は下記のような特徴があります。

プラグインのインストールと削除が簡単

すべてのプラグインとテーマを

fisher install プラグイン名

と入れるだけで、ダウンロード、インストールできます。

qs-install
クイックスタートガイドより)

削除したくなったら、これだけで終わり。

fisher uninstall プラグイン名

シンプル〜

他のフレームワークのプラグインも使うことができる

一般的にoh-my-fishなど、フレームワークのプラグインは、そのフレームワークの中でのみ有効なのに対し、Fisherは自身のプラグインだけでなく、他フレームワークのプラグインも使うことができます。

全てにドキュメンテーションがある!

Fisher/wikiから一覧が見られます。
installation、commands、guides..etc 圧倒的なドキュメンテーションの量。今のところ全てにあるようです。

Fish Plugin Market (Fishery)

これ面白いなと思いました。

「Fish Plugin Market」の名前の通り、更に追加したいプラグインがあったらここからインストールするというもの。ほんとにマーケットみたいでわくわくします。

ハイレベルな機能のものから、黒い画面がちょっと楽しくなるものまで色々あります。

  • Fishtape:unit-testフレームワークになっているプラグイン。Fisherもそこのプラグインのテストも全文Fishtapeを使っているみたいです。

  • Spin : インストール中の微妙な数秒を楽しませてくれるやつ。左下でくるくる回ってます、かわいい。
    spin.gif

  • Shark : かっこよくて貼っちゃいました。おそらく、データをグラフで表示しているようです。
    Shark

初心者なので目を惹くグラフィックに心奪われがちですが、このへんはわかるようになればなるほど便利なのでしょうね。
因みにこれらはFisher以外でのシステムにも対応しているとの事。

以上、かなり簡易的に書きましたので、更に知りたい方はFisherの公式もしくはREADMEへ。

最後に

今回Shellって何?から始めてみて、初心者でも実際今すぐ使えるかどうかではなく、こういうものをどんどん入れたほうがいいなと感じました。

今は手が届かないスキルだからこそ、知っていたほうが自分の大きな励みになりますね。

次回、実際の使い方等もっと詳しく書いてみたいと思います。

今回は自分のためのメモも兼ねて書きましたので、理解不足な事も多々あると思います。

もしなにかありましたら、コメント等くださると嬉しいです。



1 本文にあるように、Fisherは他フレームワークのプラグインも使えるという自由度の高さから、他と一線を画すということで、フレームワークではなくプラグインマネージャと呼称しているようです。:arrow_heading_up:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away