「インストール - Fish」の版間の差分
|  (→設定) | |||
| (同じ利用者による、間の22版が非表示) | |||
| 25行目: | 25行目: | ||
| ==== パッケージ管理システムからインストール ==== | ==== パッケージ管理システムからインストール ==== | ||
| パッケージ管理システムからFishをインストールする。<br> | パッケージ管理システムからFishをインストールする。<br> | ||
|   #  |   # RHEL | ||
|   sudo  |   sudo dnf install fish | ||
|   # SUSE |   # SUSE | ||
| 33行目: | 33行目: | ||
| ==== ソースコードからインストール ==== | ==== ソースコードからインストール ==== | ||
| ビルドに必要な依存関係のライブラリをインストールする。<br> | ビルドに必要な依存関係のライブラリをインストールする。<br> | ||
|   #  |   # RHEL | ||
|   sudo  |   sudo dnf install cmake ncurses-devel | ||
|   # SUSE |   # SUSE | ||
|   sudo zypper  |   sudo zypper install cmake ncurses-devel ncurses5-devel libpcre2-32-0 libpcre2-16-0 libpcre2-8-0 pcre2-devel \ | ||
|                      python3-Sphinx gettext-runtime gettext-tools | |||
|                      rust cargo  # Fish 4.0以降からRustが必須 | |||
|  # Manjaro | |||
|  sudo pacman -S --needed cmake ncurses pcre2 python-sphinx gettext | |||
|                          rust  # Fish 4.0以降からRustが必須 | |||
| <br> | <br> | ||
| [https://github.com/fish-shell/fish-shell/releases FishのGithub]からソースコードをダウンロードする。<br> | [https://github.com/fish-shell/fish-shell/releases FishのGithub]からソースコードをダウンロードする。<br> | ||
| ダウンロードしたファイルを解凍する。<br> | |||
|  tar xf fish-<バージョン>.tar.gz | |||
|  cd fish-<バージョン> | |||
| <br> | <br> | ||
| または、<code>git clone</code>コマンドを使用してソースコードをダウンロードする。<br> | |||
|   git clone https://github.com/fish-shell/fish-shell.git | |||
|  cd fish-shell | |||
| <br> | <br> | ||
| Fishをビルドおよびインストールする。<br> | Fishをビルドおよびインストールする。<br> | ||
|   mkdir build && cd build |   mkdir build && cd build | ||
|   cmake -DCMAKE_INSTALL_PREFIX= |   cmake -DCMAKE_BUILD_TYPE=Release \ | ||
|        -DCMAKE_INSTALL_PREFIX=<Fishのインストールディレクトリ> \ | |||
|        -DBUILD_DOCS=ON   \ | |||
|        -DINSTALL_DOCS=ON \ | |||
|        -DWITH_GETTEXT=ON \ | |||
|        .. | |||
|   make -j $(nproc) |   make -j $(nproc) | ||
|   make install |   make install | ||
| <br> | <br> | ||
| ==== 設定 ==== | ==== 設定 ==== | ||
| . | 必要であれば、~/.profileファイル等にFishのパスを設定する。<br> | ||
|   vi ~/.profile |   vi ~/.profile | ||
| <br> | <br> | ||
|  <syntaxhighlight lang="sh"> | |||
|   # ~/.profileファイル |   # ~/.profileファイル | ||
|   export PATH="/<Fishのインストールディレクトリ>/bin:$PATH" |   export PATH="/<Fishのインストールディレクトリ>/bin:$PATH" | ||
|  </syntaxhighlight> | |||
| <br><br> | |||
| == グローバルエイリアス == | |||
| Fishでは、Zshにあるグローバルエイリアスは実装しない方針となっている。<br> | |||
| もし、Zshにあるようなグローバルエイリアスを定義するには、<code>bind</code>コマンドと<code>commandline</code>コマンドを使用する。<br> | |||
| <br> | <br> | ||
| 以下の例では、[L]キーを押下後に[Ctrl] + [X]キーを同時押下することにより、"| less"が展開されるように設定している。<br> | |||
| なお、<code>headコマンド</code>、<code>tail</code>コマンド、<code>grep</code>コマンドも同様である。<br> | |||
| <br> | |||
|   vi ~/.config/fish/bind_global_alias.fish | |||
| <br> | |||
|  <syntaxhighlight lang="fish"> | |||
|  # ~/.config/fish/bind_global_alias.fishファイル | |||
|  function bind_global_alias | |||
|     switch (commandline -t) | |||
|        case "l" | |||
|           commandline -rt '| less' | |||
|        case "h" | |||
|           commandline -rt '| head' | |||
|        case "t" | |||
|           commandline -rt '| tail' | |||
|        case "g" | |||
|           commandline -rt '| grep' | |||
|        case grep | |||
|           commandline -rt 'grep -iE ' | |||
|        case prog | |||
|           commandline -rt '& progress -mp $last_pid' | |||
|        case progress | |||
|           commandline -rt '& progress -mp $last_pid' | |||
|     end | |||
|  end | |||
|  # [Ctrl] + [X]キーに対応 | |||
|  bind \cx bind_global_alias | |||
|  # [Alt] + [X]キーに対応 | |||
|  bind \ex bind_global_alias | |||
|  # by @GReagle@github | |||
|  # https://github.com/fish-shell/fish-shell/issues/1963#issuecomment-93775067 | |||
|  </syntaxhighlight> | |||
| <br> | |||
| == FisherManのインストール == | |||
| ==== FisherManのインストール ==== | |||
| FisherManは、Fishのパッケージ管理ツールである。<br> | |||
| Fishプラグインのインストール、アップデート、削除において、Fishのタブ補完機能と豊富な構文の強調表示を利用してインタラクティブに行うことができる。<br> | |||
| <br> | |||
| 関数、補完、バインディング、スニペットをコマンドラインから管理できる。<br> | |||
| シェルの機能を拡張して、プロンプトの外観を変更および異なるシステム間で再現可能な設定を簡単に作成できる。<br> | |||
| また、FisherManは、Oh My Fishもサポートしている。<br> | |||
| <br> | |||
| FisherManをインストールするには、以下のコマンドを実行する。<br> | |||
|  curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher | |||
| <br> | |||
| ==== Fishプラグインのインストール ==== | |||
| Fishプラグインをインストールするには、<code>install</code>コマンドの後にGitHub上のリポジトリへのパスを指定する。<br> | |||
|  fisher install ilancosman/tide | |||
| <br> | |||
| Fishプラグインの特定のバージョンを取得するには、プラグイン名の後に<code>@</code>マークを付け、タグ、ブランチ、またはコミットを付加する。<br> | |||
|  fisher install jorgebucaran/nvm.fish@2.1.0 | |||
| <br> | |||
| ローカルディレクトリからFishプラグインをインストールすることもできる。<br> | |||
|  fisher install /<Fishプラグインがあるローカルディレクトリ> | |||
| <br> | |||
| FisherManは、FishプラグインをFishの設定ディレクトリに展開して、既存のファイルを上書きする。<br> | |||
| この動作を変更する場合は、<code>$fisher_path</code>を任意の場所に設定して、関数のパスに入れること。<br> | |||
| <br> | |||
| ==== インストールされているFishプラグインの表示 ==== | |||
| 現在インストールされている全てのFishプラグインを表示するには、<code>list</code>コマンドを使用する。<br> | |||
| <code>list</code>コマンドには、出力をフィルタリングするための正規表現を指定することもできる。<br> | |||
|  fisher list | |||
|  fisher list \^/ | |||
| <br> | |||
| ==== Fishプラグインの更新 ==== | |||
| 個別にFishプラグインを最新に更新するには、以下のコマンドを実行する。<br> | |||
|  fisher update jorgebucaran/fisher | |||
| <br> | |||
| 全てのFishプラグインを最新に更新するには、以下のコマンドを実行する。<br> | |||
|  fisher update | |||
| <br> | |||
| ==== Fishプラグインのアンインストール ==== | |||
| 個別にFishプラグインをアンインストールするには、以下のコマンドを実行する。<br> | |||
|  fisher remove jorgebucaran/nvm.fish | |||
|  fisher remove jorgebucaran/nvm.fish@2.1.0 | |||
| <br> | |||
| 全てのFishプラグインをアンインストールするには、以下のコマンドを実行する。<br> | |||
|  fisher list | fisher remove | |||
| <br><br> | |||
| == Pecoのインストール == | |||
| Pecoは、Goで記述されたシンプルな対話型フィルタリングツールである。<br> | |||
| grepコマンドと異なり、タイプしながら現在の結果を閲覧することができるため、ログ、プロセス統計、ファイルの検索等のフィルタリングに最適である。<br> | |||
| <br> | |||
| * インストール方法 1 (推奨) | |||
| *: [https://github.com/peco/peco.git PecoのGithub]にアクセスして、Pecoをダウンロードして解凍する。 | |||
| *: <code>tar xf peco_linux_<アーキテクチャ名>.tar.gz</code> | |||
| *: <br>  | |||
| *: 解凍したディレクトリを任意のディレクトリに配置する。 | |||
| *: 推奨するディレクトリは、/<Fishのインストールディレクトリ>/binディレクトリである。 | |||
| *: ~/.profileファイル等に、配置したディレクトリの環境変数<code>PATH</code>を追加する。 | |||
| *: <code># ~/.profileファイル</code> | |||
| *: <code>export PATH="<Pecoのインストールディレクトリ>:$PATH"</code> | |||
| *: <br> | |||
| * インストール方法 2 | |||
| *: PecoのGitHubから、ソースコードをダウンロードする。 | |||
| *: この時、GOのインストールディレクトリ内にクローンする。(例. /<GOのインストールディレクトリ>/src/github.com/peco/peco) | |||
| *: これは、メインのバイナリが内部パッケージを参照しているため、ソースコードが正しいパッケージの場所に置かれている必要があるからである。 | |||
| *: <code>git clone https://github.com/peco/peco.git peco</code> | |||
| *: <br> | |||
| *: ダウンロードしたディレクトリに移動して、Pecoをビルドする。 | |||
| *: <code>make build</code> | |||
| *: <br> | |||
| *: 次に、releases/<バージョン>ディレクトリにpecoをインストールする。 | |||
| *: <code>go build</code> | |||
| *: <br> | |||
| *: 生成された実行ファイルを、例えば、/<Fishのインストールディレクトリ>/binディレクトリ等にコピーする。 | |||
| *: これは、Pecoの依存関係の正しいバージョンをインストールしている。 | |||
| *: <br> | |||
| *: 続いて、Pecoをビルドする。<br> | |||
| *: これにより、クローンされたPecoリポジトリのルートにPecoの実行ファイルがコンパイルされる。<br> | |||
| *: <code>go build cmd/peco/peco.go</code> | |||
| *: <br> | |||
| *: cmd/peco/ディレクトリにあるpeco.goファイルを、任意の場所にコピーする。<br> | |||
| <br><br> | <br><br> | ||
| == Oh My Fishのインストール == | == Oh My Fishのインストール == | ||
| Oh My Fishは何年もメンテナンスされていないため、複数のテーマやパッケージが壊れており、特定の部分が動作しない可能性がある。<br> | |||
| <br> | |||
| ==== Curlコマンドからインストール ==== | ==== Curlコマンドからインストール ==== | ||
| Curlコマンドを実行して、Oh My Fishをダウンロードする。<br> | Curlコマンドを実行して、Oh My Fishをダウンロードする。<br> | ||
| 86行目: | 228行目: | ||
|   fish install --offline=omf.tar.gz |   fish install --offline=omf.tar.gz | ||
| <br><br> | <br><br> | ||
| == ログインシェルの変更 == | |||
| Fishを利用可能なシェル一覧に追加する。<br> | |||
| /etc/shellsファイルにFishのパスを追加することにより、<code>chsh</code>コマンド、または、<code>usermod</code>コマンドでログインシェルの変更が可能となる。<br> | |||
|  echo "/<Fishのインストールディレクトリ>/bin/fish" | sudo tee -a /etc/shells | |||
| <br> | |||
| 次に、ユーザのログインシェルを変更する。(パスワードの入力が必要となる)<br> | |||
|  chsh -s /<Fishのインストールディレクトリ>/bin/fish $USER | |||
|  # または | |||
|  sudo usermod --shell /<Fishのインストールディレクトリ>/bin/fish $USER | |||
| <br> | |||
| ログインシェルが変更されているかどうかを確認する。<br> | |||
|  grep $USER /etc/passwd | |||
| <br> | |||
| 再ログイン、または、PCを再起動する。<br> | |||
| <br><br> | |||
| == ベルの設定 == | |||
| 以下の例では、sudoコマンドを実行してパスワード認証する場合、ベルを鳴らしている。<br> | |||
| <br> | |||
| Fishの設定ファイルを開く。<br> | |||
|  vi ~/.config/fish/config.fish | |||
| <br> | |||
|  <syntaxhighlight lang="fish"> | |||
|  # ~/.config/fish/config.fishファイル | |||
|  # ベルを有効化 | |||
|  ## デフォルトのキーバインディングを使用 | |||
|  ## -Uフラグはユニバーサル変数として設定 (全てのセッションで有効) | |||
|  set -U fish_key_bindings fish_default_key_bindings | |||
|  ## ベルを明示的に有効化 | |||
|  ## -gフラグはグローバル変数として設定 | |||
|  set -g fish_ring_bell on | |||
|  # sudoのエイリアスを作成してベルを追加 | |||
|  function sudo | |||
|     # パスワード入力の前にベル音を鳴らす | |||
|     command echo -ne "\a" | |||
|     # 元のsudoコマンドを実行 | |||
|     command sudo $argv | |||
|  end | |||
|  </syntaxhighlight> | |||
| <br><br> | |||
| __FORCETOC__ | __FORCETOC__ | ||
| [[カテゴリ: | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:シェルスクリプト]] | ||
2025年3月16日 (日) 21:59時点における最新版
概要
Fishは、LinuxやMacOS向けのスマートで使用しやすいコマンドラインシェルである。
Fishには、以下に示す特徴がある。
- オートサジェスト
- Webブラウザのように履歴や補完に基づいて、入力中にコマンドを提案する。
 
- 美しいVGAカラー
- 24ビットのTrueColorをサポートしている。
 
- 完全なスクリプト言語
- Fishは完全にスクリプト化されており、その構文はシンプル、クリーン、かつ一貫している。
 
- Webベースの設定
- Webページから色を設定することや、関数、変数、履歴を表示することができる。
 
- Man Page Completions
- 他のシェルはプログラム可能な補完機能をサポートしているが、Fishでは、インストールされたmanページを解析して自動的に補完機能を生成する。
 
- アウトオブザボックス機能
- タブ補完やシンタックスハイライト等の機能が動作するだけでなく、新たに設定する必要がない。
 
Fishのインストール
パッケージ管理システムからインストール
パッケージ管理システムからFishをインストールする。
# RHEL sudo dnf install fish # SUSE sudo zypper install fish
ソースコードからインストール
ビルドに必要な依存関係のライブラリをインストールする。
# RHEL
sudo dnf install cmake ncurses-devel
# SUSE
sudo zypper install cmake ncurses-devel ncurses5-devel libpcre2-32-0 libpcre2-16-0 libpcre2-8-0 pcre2-devel \
                    python3-Sphinx gettext-runtime gettext-tools
                    rust cargo  # Fish 4.0以降からRustが必須
# Manjaro
sudo pacman -S --needed cmake ncurses pcre2 python-sphinx gettext
                        rust  # Fish 4.0以降からRustが必須
FishのGithubからソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf fish-<バージョン>.tar.gz cd fish-<バージョン>
または、git cloneコマンドを使用してソースコードをダウンロードする。
git clone https://github.com/fish-shell/fish-shell.git cd fish-shell
Fishをビルドおよびインストールする。
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=<Fishのインストールディレクトリ> \
      -DBUILD_DOCS=ON   \
      -DINSTALL_DOCS=ON \
      -DWITH_GETTEXT=ON \
      ..
make -j $(nproc)
make install
設定
必要であれば、~/.profileファイル等にFishのパスを設定する。
vi ~/.profile
 # ~/.profileファイル
 
 export PATH="/<Fishのインストールディレクトリ>/bin:$PATH"
グローバルエイリアス
Fishでは、Zshにあるグローバルエイリアスは実装しない方針となっている。
もし、Zshにあるようなグローバルエイリアスを定義するには、bindコマンドとcommandlineコマンドを使用する。
以下の例では、[L]キーを押下後に[Ctrl] + [X]キーを同時押下することにより、"| less"が展開されるように設定している。
なお、headコマンド、tailコマンド、grepコマンドも同様である。
vi ~/.config/fish/bind_global_alias.fish
 # ~/.config/fish/bind_global_alias.fishファイル
 
 function bind_global_alias
    switch (commandline -t)
       case "l"
          commandline -rt '| less'
       case "h"
          commandline -rt '| head'
       case "t"
          commandline -rt '| tail'
       case "g"
          commandline -rt '| grep'
       case grep
          commandline -rt 'grep -iE '
       case prog
          commandline -rt '& progress -mp $last_pid'
       case progress
          commandline -rt '& progress -mp $last_pid'
    end
 end
 
 # [Ctrl] + [X]キーに対応
 bind \cx bind_global_alias
 
 # [Alt] + [X]キーに対応
 bind \ex bind_global_alias
 
 # by @GReagle@github
 # https://github.com/fish-shell/fish-shell/issues/1963#issuecomment-93775067
FisherManのインストール
FisherManのインストール
FisherManは、Fishのパッケージ管理ツールである。
Fishプラグインのインストール、アップデート、削除において、Fishのタブ補完機能と豊富な構文の強調表示を利用してインタラクティブに行うことができる。
関数、補完、バインディング、スニペットをコマンドラインから管理できる。
シェルの機能を拡張して、プロンプトの外観を変更および異なるシステム間で再現可能な設定を簡単に作成できる。
また、FisherManは、Oh My Fishもサポートしている。
FisherManをインストールするには、以下のコマンドを実行する。
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
Fishプラグインのインストール
Fishプラグインをインストールするには、installコマンドの後にGitHub上のリポジトリへのパスを指定する。
fisher install ilancosman/tide
Fishプラグインの特定のバージョンを取得するには、プラグイン名の後に@マークを付け、タグ、ブランチ、またはコミットを付加する。
fisher install jorgebucaran/nvm.fish@2.1.0
ローカルディレクトリからFishプラグインをインストールすることもできる。
fisher install /<Fishプラグインがあるローカルディレクトリ>
FisherManは、FishプラグインをFishの設定ディレクトリに展開して、既存のファイルを上書きする。
この動作を変更する場合は、$fisher_pathを任意の場所に設定して、関数のパスに入れること。
インストールされているFishプラグインの表示
現在インストールされている全てのFishプラグインを表示するには、listコマンドを使用する。
listコマンドには、出力をフィルタリングするための正規表現を指定することもできる。
fisher list fisher list \^/
Fishプラグインの更新
個別にFishプラグインを最新に更新するには、以下のコマンドを実行する。
fisher update jorgebucaran/fisher
全てのFishプラグインを最新に更新するには、以下のコマンドを実行する。
fisher update
Fishプラグインのアンインストール
個別にFishプラグインをアンインストールするには、以下のコマンドを実行する。
fisher remove jorgebucaran/nvm.fish fisher remove jorgebucaran/nvm.fish@2.1.0
全てのFishプラグインをアンインストールするには、以下のコマンドを実行する。
fisher list | fisher remove
Pecoのインストール
Pecoは、Goで記述されたシンプルな対話型フィルタリングツールである。
grepコマンドと異なり、タイプしながら現在の結果を閲覧することができるため、ログ、プロセス統計、ファイルの検索等のフィルタリングに最適である。
- インストール方法 1 (推奨)
- PecoのGithubにアクセスして、Pecoをダウンロードして解凍する。
- tar xf peco_linux_<アーキテクチャ名>.tar.gz
- 解凍したディレクトリを任意のディレクトリに配置する。
- 推奨するディレクトリは、/<Fishのインストールディレクトリ>/binディレクトリである。
- ~/.profileファイル等に、配置したディレクトリの環境変数PATHを追加する。
- # ~/.profileファイル
- export PATH="<Pecoのインストールディレクトリ>:$PATH"
 
- インストール方法 2
- PecoのGitHubから、ソースコードをダウンロードする。
- この時、GOのインストールディレクトリ内にクローンする。(例. /<GOのインストールディレクトリ>/src/github.com/peco/peco)
- これは、メインのバイナリが内部パッケージを参照しているため、ソースコードが正しいパッケージの場所に置かれている必要があるからである。
- git clone https://github.com/peco/peco.git peco
- ダウンロードしたディレクトリに移動して、Pecoをビルドする。
- make build
- 次に、releases/<バージョン>ディレクトリにpecoをインストールする。
- go build
- 生成された実行ファイルを、例えば、/<Fishのインストールディレクトリ>/binディレクトリ等にコピーする。
- これは、Pecoの依存関係の正しいバージョンをインストールしている。
- 続いて、Pecoをビルドする。
- これにより、クローンされたPecoリポジトリのルートにPecoの実行ファイルがコンパイルされる。
- go build cmd/peco/peco.go
- cmd/peco/ディレクトリにあるpeco.goファイルを、任意の場所にコピーする。
 
Oh My Fishのインストール
Oh My Fishは何年もメンテナンスされていないため、複数のテーマやパッケージが壊れており、特定の部分が動作しない可能性がある。
Curlコマンドからインストール
Curlコマンドを実行して、Oh My Fishをダウンロードする。
curl -L https://get.oh-my.fish > install
Oh My Fishをインストールする。
fish install --path=~/.local/share/omf --config=~/.config/omf
Githubからダウンロードしてインストール
Oh My FishのGithubからOh My Fishをダウンロードする。
または、以下のコマンド実行する。
git clone https://github.com/oh-my-fish/oh-my-fish.git
Oh My Fishをインストールする。
# Gitからインストールする場合 git clone https://github.com/oh-my-fish/oh-my-fish cd oh-my-fish bin/install --offline # Tarballからインストールする場合 curl -L https://get.oh-my.fish > install fish install --offline=omf.tar.gz
ログインシェルの変更
Fishを利用可能なシェル一覧に追加する。
/etc/shellsファイルにFishのパスを追加することにより、chshコマンド、または、usermodコマンドでログインシェルの変更が可能となる。
echo "/<Fishのインストールディレクトリ>/bin/fish" | sudo tee -a /etc/shells
次に、ユーザのログインシェルを変更する。(パスワードの入力が必要となる)
chsh -s /<Fishのインストールディレクトリ>/bin/fish $USER # または sudo usermod --shell /<Fishのインストールディレクトリ>/bin/fish $USER
ログインシェルが変更されているかどうかを確認する。
grep $USER /etc/passwd
再ログイン、または、PCを再起動する。
ベルの設定
以下の例では、sudoコマンドを実行してパスワード認証する場合、ベルを鳴らしている。
Fishの設定ファイルを開く。
vi ~/.config/fish/config.fish
 # ~/.config/fish/config.fishファイル
 
 # ベルを有効化
 ## デフォルトのキーバインディングを使用
 ## -Uフラグはユニバーサル変数として設定 (全てのセッションで有効)
 set -U fish_key_bindings fish_default_key_bindings
 
 ## ベルを明示的に有効化
 ## -gフラグはグローバル変数として設定
 set -g fish_ring_bell on
 
 # sudoのエイリアスを作成してベルを追加
 function sudo
    # パスワード入力の前にベル音を鳴らす
    command echo -ne "\a"
 
    # 元のsudoコマンドを実行
    command sudo $argv
 end