MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - Fishのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - Fish
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Fishは、LinuxやMacOS向けのスマートで使用しやすいコマンドラインシェルである。<br> <br> Fishには、以下に示す特徴がある。<br> * オートサジェスト *: Webブラウザのように履歴や補完に基づいて、入力中にコマンドを提案する。 *: <br> * 美しいVGAカラー *: 24ビットのTrueColorをサポートしている。 *: <br> * 完全なスクリプト言語 *: Fishは完全にスクリプト化されており、その構文はシンプル、クリーン、かつ一貫している。 *: <br> * Webベースの設定 *: Webページから色を設定することや、関数、変数、履歴を表示することができる。 *: <br> * Man Page Completions *: 他のシェルはプログラム可能な補完機能をサポートしているが、Fishでは、インストールされたmanページを解析して自動的に補完機能を生成する。 *: <br> * アウトオブザボックス機能 *: タブ補完やシンタックスハイライト等の機能が動作するだけでなく、新たに設定する必要がない。 <br><br> == Fishのインストール == ==== パッケージ管理システムからインストール ==== パッケージ管理システムからFishをインストールする。<br> # RHEL sudo dnf install fish # SUSE sudo zypper install fish <br> ==== ソースコードからインストール ==== ビルドに必要な依存関係のライブラリをインストールする。<br> # 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が必須 <br> [https://github.com/fish-shell/fish-shell/releases FishのGithub]からソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf fish-<バージョン>.tar.gz cd fish-<バージョン> <br> または、<code>git clone</code>コマンドを使用してソースコードをダウンロードする。<br> git clone https://github.com/fish-shell/fish-shell.git cd fish-shell <br> Fishをビルドおよびインストールする。<br> mkdir build && cd build # Fish 4.3以前 cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=<Fishのインストールディレクトリ> \ -DWITH_DOCS=ON \ -DWITH_GETTEXT=ON \ .. # Fish 4.4以降 cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=<Fishのインストールディレクトリ> \ -DWITH_DOCS=ON \ -DWITH_MESSAGE_LOCALIZATION=ON \ .. make -j $(nproc) make install <br> ==== 設定 ==== 必要であれば、~/.profileファイル等にFishのパスを設定する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル export PATH="/<Fishのインストールディレクトリ>/bin:$PATH" </syntaxhighlight> <br><br> == グローバルエイリアス == Fishでは、Zshにあるグローバルエイリアスは実装しない方針となっている。<br> これは、Fishが関数を多用するアーキテクチャであり、グローバルエイリアスが予期しない場所で展開される危険性があるためである。<br> <br> Fishでグローバルエイリアスと同等の機能を実現するには、以下の方法がある。<br> <br> * <code>abbr</code> コマンドの <code>--position anywhere</code> オプションを使用する。(推奨) * <code>fish_commandline_append</code> 関数 や <code>fish_commandline_prepend</code> 関数を使用する。 * <code>bind</code> コマンド と <code>commandline</code> コマンドを組み合わせて使用する。 <br> <center> {| class="wikitable" |+ グローバルエイリアスの実現方法の比較 ! 方法 !! 必要なバージョン !! 特徴 |- | abbr --position anywhere || Fish 3.6.0以降 || 公式推奨、[Space]キーで自動展開、履歴に展開後のコマンドが残る |- | fish_commandline_append関数 || Fish 3.3.0以降 || 組み込み関数、トグル動作をサポート |- | bind関数 + commandline関数 || 全バージョン || 柔軟なカスタマイズが可能、古いバージョンでも動作 |} </center> <br> ==== abbr --position anywhereオプション (推奨) ==== Fish 3.6.0以降では、<code>abbr</code> コマンドの <code>--positionanywhere</code>オプションを使用することにより、コマンドラインのどこでも略語を展開できる。<br> これが公式に推奨されるグローバルエイリアスの代替手法である。<br> <br> ===== 基本的な使用方法 ===== 以下の例では、<code>L</code>と入力して[Space]キーを押下すると、<code>| less</code>に展開される。<br> <br> <syntaxhighlight lang="bash"> # グローバル展開の略語を追加 abbr -a --position anywhere -- L '| less' abbr -a --position anywhere -- H '| head' abbr -a --position anywhere -- T '| tail' abbr -a --position anywhere -- G '| grep' abbr -a --position anywhere -- W '| wc -l' abbr -a --position anywhere -- S '| sort' </syntaxhighlight> <br> 上記の設定を永続化するには、<u>~/.config/fish/config.fish</u> ファイルに記述する。<br> <br> ===== --set-cursorオプション ===== <code>--set-cursor</code> オプションを使用すると、展開後のカーソル位置を指定できる。<br> マーカー (デフォルトは <code>%</code> ) の位置にカーソルが移動して、マーカーは削除される。<br> <br> <syntaxhighlight lang="bash"> # 展開後、カーソルがパイプの前に位置する abbr -a --position anywhere --set-cursor -- L '% | less' # 展開後、カーソルがgrepの引数位置に移動する abbr -a --position anywhere --set-cursor -- G '| grep %' </syntaxhighlight> <br> ===== --commandオプション (Fish 4.0以降) ===== Fish 4.0以降では、<code>--command</code> オプションを使用して、特定のコマンドの引数としてのみ略語を展開できる。<br> <br> <syntaxhighlight lang="bash"> # gitコマンドでのみ展開される略語 abbr --add --command git -- co checkout abbr --add --command git -- sw switch abbr --add --command git -- br branch abbr --add --command git -- st status # 使用例 # git co main → git checkout main に展開される # echo co → 展開されない </syntaxhighlight> <br> ===== --functionオプション ===== <code>--function</code> オプションを使用すると、関数を実行して動的に展開内容を生成できる。<br> <br> <syntaxhighlight lang="bash"> # 現在の日付を挿入する略語 function _abbr_date echo (date +%Y-%m-%d) end abbr -a --position anywhere --function _abbr_date -- DATE # 使用例 # echo DATE → echo 2025-01-15 に展開される (日付は実行時の値) </syntaxhighlight> <br> ===== --regexオプション ===== <code>--regex</code>オプションを使用すると、正規表現 (PCRE2) でマッチングできる。<br> <br> <syntaxhighlight lang="bash"> # .txtファイルをvimで開く略語 function _abbr_vim_txt echo "vim $argv" end abbr -a --position anywhere --regex --function _abbr_vim_txt -- '.+\.txt' </syntaxhighlight> <br> ==== fish_commandline_append関数とfish_commandline_prepend関数 ==== Fish 3.3.0以降では、<code>fish_commandline_append</code> 関数 と <code>fish_commandline_prepend</code> 関数が組み込まれている。<br> これらの関数はトグル動作をサポートしており、既にコマンドラインに存在する場合は削除される。<br> <br> <center> {| class="wikitable" |+ fish_commandline_append関数とfish_commandline_prepend関数 ! 関数 !! 説明 !! デフォルトのキーバインド |- | fish_commandline_prepend || コマンドラインの先頭に追加 || [Alt] + [S]キー (sudo追加) |- | fish_commandline_append || コマンドラインの末尾に追加 || なし |} </center> <br> 以下の例では、キーバインドを設定して、パイプコマンドを簡単に追加できるようにしている。<br> <br> vi ~/.config/fish/config.fish <br> <syntaxhighlight lang="bash"> # [Alt] + [L]キーで "| less" を追加 bind \el 'fish_commandline_append "| less"' # [Alt] + [G]キーで "| grep " を追加 bind \eg 'fish_commandline_append "| grep "' # [Alt] + [H]キーで "| head" を追加 bind \eh 'fish_commandline_append "| head"' # [Alt] + [T]キーで "| tail" を追加 bind \et 'fish_commandline_append "| tail"' </syntaxhighlight> <br> ==== bindコマンドとcommandlineコマンドを使用する方法 ==== <code>bind</code> コマンド と <code>commandline</code> コマンドを組み合わせることにより、柔軟なグローバルエイリアスを実現できる。<br> <br> 以下の例では、コマンドラインに <u>l</u> と入力した状態で[Ctrl] + [X]キーを同時押下することにより、<u>|less</u> に展開されるように設定している。<br> headコマンド、tailコマンド、grepコマンド等も同様に設定可能である。<br> <br> vi ~/.config/fish/bind_global_alias.fish <br> <syntaxhighlight lang="bash"> # ~/.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 </syntaxhighlight> <br> 上記のファイルを作成した後、<u>~/.config/fish/config.fish</u> ファイルで読み込む設定を追加する。<br> <br> vi ~/.config/fish/config.fish <br> <syntaxhighlight lang="bash"> # グローバルエイリアスの読み込み source ~/.config/fish/bind_global_alias.fish </syntaxhighlight> <br> ===== 使用例 ===== グローバルエイリアスを使用するには、展開したい文字を入力した後、設定したキー ([Ctrl] + [X]キー または [Alt] + [X]キー) を押下する。<br> <br> * <code>l</code> と入力して[Ctrl] + [X]キーを押下 *: | less に展開される * <code>h</code> と入力して[Ctrl] + [X]キーを押下 *: | head に展開される * <code>t</code> と入力して[Ctrl] + [X]キーを押下 *: | tail に展開される * <code>g</code> と入力して[Ctrl] + [X]キーを押下 *: | grep に展開される <br> 例えば、<u>cat /var/log/messages l</u> と入力して[Ctrl] + [X]キーを押下すると、<u>cat /var/log/messages | less</u> に展開される。<br> <br> ===== 独自のグローバルエイリアスを追加する ===== 独自のグローバルエイリアスを追加するには、<code>switch</code>文の中に<code>case</code>を追加する。<br> <br> <syntaxhighlight lang="bash"> case "<展開前の文字列>" commandline -rt '<展開後の文字列>' </syntaxhighlight> <br> 以下に、独自のグローバルエイリアスの追加例を示す。<br> <br> <syntaxhighlight lang="bash"> # wcコマンドにパイプする case "w" commandline -rt '| wc -l' # sortコマンドにパイプする case "s" commandline -rt '| sort' # xargsコマンドにパイプする case "x" commandline -rt '| xargs ' </syntaxhighlight> <br><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をダウンロードして解凍する。 *: <pre>tar xf peco_linux_<アーキテクチャ名>.tar.gz</pre> *: <br> *: 解凍したディレクトリを任意のディレクトリに配置する。 *: 推奨するディレクトリは、/<Fishのインストールディレクトリ>/binディレクトリである。 *: ~/.profileファイル等に、配置したディレクトリの環境変数<code>PATH</code>を追加する。 *: <pre>vi ~/.profile</pre> *: <br> *: <syntaxhighlight lang="sh"> # ~/.profileファイル export PATH="<Pecoのインストールディレクトリ>:$PATH" </syntaxhighlight> *: <br> * インストール方法 2 *: PecoのGitHubから、ソースコードをダウンロードする。 *: この時、GOのインストールディレクトリ内にクローンする。(例. /<GOのインストールディレクトリ>/src/github.com/peco/peco) *: これは、メインのバイナリが内部パッケージを参照しているため、ソースコードが正しいパッケージの場所に置かれている必要があるからである。 *: <pre>git clone https://github.com/peco/peco.git peco</pre> *: <br> *: ダウンロードしたディレクトリに移動して、Pecoをビルドする。 *: <pre>make build</pre> *: <br> *: 次に、releases/<バージョン>ディレクトリにpecoをインストールする。 *: <pre>go build</pre> *: <br> *: 生成された実行ファイルを、例えば、/<Fishのインストールディレクトリ>/binディレクトリ等にコピーする。 *: これは、Pecoの依存関係の正しいバージョンをインストールしている。 *: <br> *: 続いて、Pecoをビルドする。<br> *: これにより、クローンされたPecoリポジトリのルートにPecoの実行ファイルがコンパイルされる。<br> *: <pre>go build cmd/peco/peco.go</pre> *: <br> *: cmd/peco/ディレクトリにあるpeco.goファイルを、任意の場所にコピーする。<br> <br><br> == Oh My Fishのインストール == Oh My Fishは何年もメンテナンスされていないため、複数のテーマやパッケージが壊れており、特定の部分が動作しない可能性がある。<br> <br> ==== Curlコマンドからインストール ==== Curlコマンドを実行して、Oh My Fishをダウンロードする。<br> <br> curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install > install <br> Oh My Fishをインストールする。<br> <br> fish install --path=~/.local/share/omf --config=~/.config/omf <br> ==== Githubからダウンロードしてインストール ==== [https://github.com/oh-my-fish/oh-my-fish Oh My FishのGithub]からOh My Fishをダウンロードする。<br> または、<code>git clone</code> コマンドを実行してダウンロードする。<br> <br> git clone https://github.com/oh-my-fish/oh-my-fish cd oh-my-fish <br> Oh My Fishをインストールする。<br> <br> # Gitからインストールする場合 bin/install --offline # Tarballからインストールする場合 curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install > install fish install --offline=omf.tar.gz <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__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:シェルスクリプト]]
インストール - Fish
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse