過去の暗号化されたコマンドと厳密な構文の日々は終わりました。システムのスクリプト化やナビゲーションよりもmanページの解読に時間を費やすのはなぜですか?よりスムーズで直感的なLinux体験へのチケットとして、fishシェルの力とシンプルさを受け入れてください。
ユーザーフレンドリーなインターフェースから豊富なカスタマイズオプションまで、fishシェルでLinuxの旅を変革しましょう。
効率的なワークフローとLinuxスキルへの新たな自信を手に入れましょう!
前提条件
始める前に、このチュートリアルに沿って進むために以下の必要事項を確認してください:
- お使いのマシンにFish Shellがインストールされています – このチュートリアルでは、執筆時点で最新のバージョンであるfish-3.7.0を使用しています。
- A Linux system – This tutorial uses an Ubuntu 22.04 LTS for demonstrations, but other distributions will work.
コマンドの検証、オートコンプリート、および提案の探索
fishシェルをインストールしたら、シームレスなコマンド実行のためにfishシェルに飛び込みます。fishシェルは、コマンド、ファイル名、および引数に対するリアルタイムのフィードバックとコンテキストに応じた提案を提供します。
しかし、コマンドの検証、オートコンプリート、提案を覗く前に、まずfishシェルにアクセスする必要があります。
これを実行するには、以下の手順を実行して、エラーを特定して修正する機能を探索してください:
1. ターミナルを開いて、fish
コマンドを実行して、fishシェルにアクセスします。

2. 次に、現在のディレクトリ内のすべてのファイルをリストしようとするために、ls
コマンドの最初の文字を入力します。
下記のように、’l’という文字が赤く表示されます。これはfishシェルがそれを有効なコマンドとして認識していないことを示しています。この即座の視覚的な手掛かりは、何かが間違っていることを示しています。
しかし心配しないでください!オートサジェストのおかげで、’s’という文字が静かに表示され、正しいコマンドのヒントになります。

3. 今、右矢印キーまたはCtrl+Fキーを押して、オートサジェストされたls
コマンドを受け入れます。
文字 ‘l’ が赤から青に変わりました。これは、fishシェルがあなたのコマンドをls
として認識したことを示しています。

fish構成ファイルでコマンドエイリアスを定義する
リアルタイムのフィードバックとコンテキストに応じた提案に加えて、fishはコマンドライン環境をカスタマイズする強力で柔軟な方法を提供しています。それが、fish構成ファイルです。他のシェルが複数の構成ファイルを使用する可能性があるのに対し、fishは主に~/.config/fish/ディレクトリ内にあるconfig.fishという1つのファイルを使用します。
構成がfishシェルにどのように影響するかを確認するには、次のようにコマンドエイリアスを定義してみてください。
1. お好みのコードエディタやテキストエディタ(このチュートリアルでは前者を使用)を使用して、fish構成ファイルを開きます。
開いたら、魚のシェルの設定ファイルの初期コンテンツが表示されます。これにはデフォルトの設定が含まれているか、比較的空になっている場合があります。この初期状態は、以前に設定が追加されているかどうかによって異なります。
ファイルにはコメントや新しいインストールのための基本的な条件付きブロックのみが含まれる可能性があります。次のようなものです。

2. if
ブロックの中に、次の function
を追加し、変更を保存してエディターを閉じます。
この時点で、魚の設定ファイルでカスタム設定を作成しており、この関数は c
のエイリアス(clear
コマンド)を定義しています。
? 注意: 各定義された関数には、~/.config/fish/functions/ ディレクトリに対応する .fish ファイルがあります(つまり、c.fish)。

clear
command3. 次のコマンドを実行して、設定ファイル(config.fish
)を source
します。
このコマンドは端末に出力はありませんが、設定変更は現在のセッションに適用されます。
? このfishの設定ファイルは、新しいfishセッションが開始されるたびに自動的に実行され、シェルのカスタマイズを定義するのに最適な場所です。
4. 次に、プロンプトでc
を入力して、変更を確認します。
‘c‘という文字が青くなるのに注意してください。これは、fishシェルがそれをclear
コマンドとして認識していることを示しています。この動作は、fishの設定が正常に変更されたことを示します。
‘c’という文字が青くなるのを見てください。この変更は、fishシェルが‘c’をclear
コマンドとして認識しているためです。この動作は、fishの設定が正常に更新されたことを示しています。
さて、気分が向いたときに常に戻ってくる信頼できるコマンドのいくつかのエイリアスを設定してみませんか?

clear
command worksFishシェルプロンプトのカスタマイズ
よりスムーズな操作のためにエイリアスを設定するだけでなく、fishはシェルに個人のタッチを追加することでプロンプトをカスタマイズする力を与えてくれます。長いディレクトリパスの代わりに、よりクリーンで整理されたプロンプトをお楽しみください。
fishシェルプロンプトをカスタマイズするには、以下の手順を実行します。
1. fishの設定ファイル(~/.config/fish/config.fish)を開き、次の関数を追加します。
この関数は、fishシェルプロンプトをカスタマイズして、ドル記号($
)の後にスペースを表示します。

2. 変更内容をフィッシュの設定ファイルに保存して、エディターを終了します。
3. 今度は、変更内容を適用するために設定ファイルをsource
します。
ソース化されると、次のスクリーンショットのようにプロンプトの変更が表示されます。

セッション間の変更の永続化
フィッシュシェルでのカスタマイズの作成方法を見てきましたが、ひとつ注意しておくことがあります:これらの設定は現在のセッションでのみ利用可能です。
現在のセッションを閉じて新しいセッションを開くとどうなるか? ふっとんでしまいます! 丹念に作り上げた設定がすべてなくなってしまいます — がっかりですね? しかし、心配しないでください、救いがあります。 設定を忘却から救い出すためにfuncsave
コマンドを活用しましょう!
セッション間で設定を永続化するには、次の手順に従ってください:
1. フィッシュの設定ファイルを開き、funcsave
コマンドを各function
に関数名と一緒に追加します。 例:

funcsave
command to persist functions across sessions2. 変更内容を保存し、エディターと端末を閉じます。
3. 新しい端末セッションを開き、以下のfish
コマンドを実行してフィッシュシェルにアクセスします
funcsave
コマンドが機能して設定を永続化する場合、以下のようなメッセージが表示されます。

環境変数の設定と永続化
永続化関数は素晴らしいですが、グローバルにアクセス可能な値を管理すると、シェルスクリプティングが向上します。環境変数を設定します。従来のシェルは export
を使用しますが、fish は変数のスコープとエクスポート動作を制御するオプションを使用して set
を使います。
しかし、落とし穴がありますね。あなたは知っていましたか?そうです、それを当てました!ターミナルで set
コマンドを使って設定された変数は、現在のセッションでのみアクセス可能です。
環境変数を設定して永続化するには、-gx
フラグが役立ちます。以下は、-gx
フラグの動作方法です:
1. fish の設定ファイルに MY_VARIABLE
変数をグローバルに設定するための以下のコマンドを追加します。以下は、-gx
フラグの動作方法です:
-g
– 変数をグローバルにし、同じユーザー環境内のどのスコープからでもアクセス可能にします。-x
– 変数をエクスポートし、fish から起動された外部コマンドやプログラムで利用可能にします。

2. 設定変更を保存し、エディタとターミナルを閉じます。
3. 新しいターミナルセッションを開き、fish シェルにアクセスし、以下のコマンドを実行して変更を確認します。
以下の出力は、セッション間で変更が有効になったことを確認しています。

4. 確認したら、次のset
コマンドをfish設定ファイルに追加し、変更を保存してエディターを閉じます。
このコマンドにより、MY_UNIVERSAL_VARIABLE
変数が再起動後もすべてのセッションでグローバルになります。
以下で-Ux
フラグがどのように機能するかを確認してください。
-U
–MY_UNIVERSAL_VARIABLE
変数をuniversalにし、現在のおよび将来のすべての端末セッションで共有されるようにします。これには、異なるユーザーのセッションも含まれます。-x
– 変数は子プロセスにエクスポートされ、現在のセッションから呼び出されたコマンドやスクリプトからアクセスできるようになります。

5. 新しい端末セッションを開き、fishシェルにアクセスし、以下のecho
コマンドを実行して変更を確認します。
すべてが順調にいけば、次の出力が表示され、セッション間で変更が有効になったことが示されます。

? fish設定ファイル以外に、ターミナルで
fish_config
を活用して、迅速かつ自動的にカスタマイズを行います。このコマンドは、ブラウザーでウェブインターフェースを起動し、プロンプトの調整、設定の微調整、およびユーザーフレンドリーなセットアップでの関数および変数の管理を可能にします。
Fisherパッケージマネージャーを使用したFishプラグインの管理
魚のシェルはそれ自体で印象的ですよね?でもね、プラグインを統合し始めると、さらに強力になります。これらのプラグインは、魚のシェルの機能を拡張し、新しいコマンド、ユーティリティ、および統合を導入して、コマンドラインの体験を大幅に向上させます。
良い例の1つが、魚のシェル向けに設計されたパッケージマネージャーであるFisherです。このプラグインは、パフォーマンスとシンプルさを考慮して構築されており、軽量です。
? Fisherは、魚のシェルプラグインを管理する際に軽量であり、システムレベルのパッケージマネージャーと直接比較することはできません。これは、それが管理するパッケージのサイズと複雑さに関して明らかです。
魚のプラグインを管理するには、まずFisherを以下の手順でインストールする必要があります:
ターミナルを開き、魚のシェルにアクセスし、次のコマンドを実行してFisherをダウンロードしてインストールします。このコマンドはFisherのインストールスクリプトを取得してsource
にパイプし、curl
を介して現在の魚のシェルセッションでスクリプトを実行します。
インストールが完了すると、次の出力が表示されます。

これで、以下のfisher
コマンドを実行して、Fisherの現在の--version
を表示してインストールが正常に完了したことを確認します。

GitNowプラグインのインストール
いまFisherが動作しているので、次は何ですか? フィッシュシェルをいくつかのクールなプラグインで強化するのはどうですか? たとえば、GitNowは、フィッシュシェル内でのGitワークフローを強化するツールキットです。魅力的ですね。
GitNowは、日常のGitタスクのための効率的なコマンドを提供し、生産性を向上させ、Gitコマンドのルーチンを簡素化します。
Fisherパッケージマネージャを使用してGitNowをインストールするには、以下の手順に従ってください。
1. フィッシュシェルで、次のfisher
コマンドを実行してGitNowプラグイン(joseluisq/gitnow
)をinstall
します。
このコマンドにより、FisherがGitNowを取得し、フィッシュ構成に統合し、Gitのショートカットがすぐに利用可能になります。

2. インストール後、以下のgitnow
コマンドを実行して、GitNowが正しくインストールされていることを確認します。
このコマンドは、現在のインストールされているGitNowのバージョンを表示しますが、シェルでGitNowのコマンドが認識されている場合にのみ表示されます。

3. 最後に、このfisher
コマンドを実行して、GitNowを含むFisherが管理するすべてのプラグインをlist
します。
以下では、GitNowプラグインとFisherプラグイン自体を確認できます。

フィッシュシェルプラグインの削除
フィッシュシェルがプラグインで溢れていませんか? 必要のないプラグインを削除して、必要なものを見つけるのが面倒ですか? 不要なプラグインを削除して、フィッシュシェルの環境を整理してください。
Fisherで管理されているプラグインを削除するには、次の手順に従ってください:
1. 現在インストールされているすべてのプラグインを list
するには、次のコマンドを実行してください。
削除したいプラグインをリストから選択してください。

2. 次に、以下の fisher remove
コマンドを実行し、プラグイン名(joseluisq/gitnow
)を指定して削除します。
このコマンドは、GitNowプラグインをfish shell環境からアンインストールするようにFisherに指示します。

3. 続けて、同じ fisher list
コマンドを実行して、GitNowプラグインが正常に削除されたことを確認してください。
GitNowプラグインは、インストールされているプラグインのリストから削除されているはずです。

Fisherパッケージマネージャーのアンインストール
Fisherパッケージマネージャーは本当に便利ですが、Fisherに不満を感じたり、問題がある場合は、アンインストールするのが最良の選択肢です。
fish shellからFisherを包括的にアンインストールするには、次の手順を完了してください:
以下のコマンドを実行して、Fisher経由でインストールされたすべてのプラグインおよび fisher
を list
および remove
します。

あるいは、次のコマンドを実行して、fisher
自体のみを remove
します。

Oh My Fishパッケージマネージャーの探索
すでにFisherでクルーズ中の場合、なぜOh My Fishを考慮するのですか? Fisherでfishシェルのプラグインのパワーを体験しました。しかし、ここがポイントです:このフレームワークは、fishシェルの新しいカスタマイズの領域を開き、幅広いテーマやプラグインを提供しています。
Oh My Fishが提供するものを確認するには、まず次のパッケージマネージャーをインストールします。
次のcurl
コマンドを実行して、fish
シェル内でOh My Fishのインストールスクリプト(https://get.oh-my.fish
)をダウンロードして実行します。
成功した場合、次のような出力が得られます。

インストールが完了したら、次のomf
コマンドを実行して、Oh My Fishのインストールされたバージョンを確認します。
A successful response, as shown below, indicates that Oh My Fish is ready and waiting to transform your fish shell experience.

Oh My Fishテーマで環境をカスタマイズ
同じ古いfishシェルの外観にうんざりしていませんか?なぜ個性を加えないのですか? Oh My Fishから新鮮で個人的なテーマでfishシェルの環境をリニューアルしてください。
fishシェルの環境をカスタマイズするには、次の手順でテーマをインストールする必要があります。
1. fishの設定ファイルを開き、プロンプトがどのように表示されるかを定義するfish_prompt
関数を削除します。これにより、設定したカスタムプロンプトがOh My Fishが提供するテーマと競合したり上書きされたりするのを防ぎます。
? テーマには、外観と機能に重要なユニークなプロンプトが付属しています。カスタムプロンプト(
fish_prompt
)を無効にすると、選択した Oh My Fish テーマがそのデザインと機能を完全にフィッシュシェルに統合します。
2. 次に、~/.config/fish/functions/fish_prompt.fish
ファイルを削除します(rm
)。このコマンドには出力はありませんが、このファイルを削除することで、フィッシュシェルはデフォルトのプロンプトに戻ります。
3. これらの変更がフィッシュ設定ファイルに反映されるように、次の source
コマンドを実行します。

4. 次に、次の omf
コマンドを実行して、フィッシュシェルに適した テーマ
を見つけます。
フィッシュシェルに統合したいテーマを選択します(たとえば、cbjohnson)。
? インストールする前に、各テーマがどのように見えるかを確認するために、Oh My Shell テーマの公式 GitHub リポジトリをご覧ください。

? 以下のコマンドを実行して、プラグインを使用してフィッシュシェルを強化します。インストールするプラグインのリストについては、OMF GitHub リポジトリを参照してください。
omf install <plugin_name>
5. その後、以下のコマンドを実行して、第四ステップで選択したテーマ(cbjohnson
)をインストール
します。
インストールされると、プロンプトが次のようにすぐに変更されます。

? ヒント: 2つ以上のテーマを持っている場合は、次のコマンドを実行してテーマを素早く切り替えることができます。
omf theme <theme_name>
Oh My Fishのアンインストール
Oh My Fishは、シェルの雰囲気を華やかにするための優れたものです。しかし、景色を変えたい場合や新しいものを試したい場合は、Oh My Fishをアンインストールして、fishシェルを新鮮な状態に戻すことができます。
Oh My Fishをアンインストールするには、次の手順を実行してください:
1. 以下のrm
コマンドを実行して、すべてのOh My Fish関連ファイルを削除します。
削除した後、最初にインストールしたテーマが消えるのが見えるでしょう。

2. 次に、以下の各コマンドを実行して、さらにOh My Fish関連ファイルを削除します。
これらのコマンドには出力がありませんが、これらのファイルを削除することで、Oh My Fishのすべての残留物がシステムから削除されます。
3. 以下のomf
コマンドを実行して、削除が確認されるかどうかを確認します。
以下のようなエラーが表示され、omf
コマンドが見つからないというメッセージが表示されると、Oh My Fishが完全にアンインストールされたことがわかります。

デフォルトシェルとしてのFishの設定
fishシェルを使ってLinuxを活用してきたのであれば、なぜデフォルトのシェルとして設定しないのでしょうか? そうすれば、新しいターミナルを起動するたびに切り替える手間が省けます。
fishをデフォルトのシェルとして設定するには、以下の手順を実行してください:
1. 以下のコマンドを実行して、fish
シェルが配置されている which
のパスを見つけます。
後続の手順で必要になるため、パスをクリップボードにコピーしてください。

2. 次に、次のコマンドを実行して、fish を/etc/shells
の許可されたシェルのリストに追加します。

3. 最後に、以下のchsh
コマンドを実行して、デフォルトのシェルを fish (/usr/bin/fish
) に変更します。
マシンを再起動すると、デフォルトのシェルとして fish が設定されます。

? ヒント: このセクションの手順をすべて繰り返して、Bash のような別のシェルに戻すことができます。ステップ二とステップ三で Bash のパスを指定し、変更を適用するためにマシンを再起動してください。
結論
このチュートリアル全体で、fish シェルの本質に深く入り込み、その強力な機能やカスタマイズ可能なオプションを解明しました。
エイリアスの定義からプロンプトのカスタマイズ、環境変数の永続化からプラグインの管理まで、fish シェルはあなたの頼れる相棒でした。Oh My Fish パッケージマネージャーを使用して、Linux の体験を変革する洞察を得ました。さらに、新しいプラグインやテーマを簡単に見つけてインストールし、fish シェル環境の機能性と美観を拡張する方法を学びました。
今、あなたは fish シェルの基本を探求しました。さらに深く掘り下げて、そのフルポテンシャルを引き出してみてください。なぜ、Powerline や Starship のようなカスタムプロンプトを試して、シェルに個人のタッチを加えないのでしょうか?