フィッシュシェル

Fishシェルのユーザー紹介

私は使用していますフィッシュシェル何ヶ月もの間、それは私が今まで使った中で最高のシェルだと思います。多くの理由で。

人々は固執しているようですバッシュこれは多くのシステムのデフォルトです(更新:macOSのデフォルトはZshになりました)、またはZshを次のような優れたツールで使用しますOh My Zshそれをさらに驚くべきものにするために。

Bashは優れていますが、構成可能なオプションのセットが限られている非常に基本的なシェルです。私は主に実行するためにそれを使用する傾向がありますバッシュスクリプト(これは別のトピックです)インタラクティブシェルとしてではなく。 Zshは多くの機能を提供しますが、セットアップに少しの構成が必要であり、初心者を怖がらせる可能性があります。また、オプションと自由が多すぎるということは、構成の麻痺に非常に簡単に陥ることができることを意味し、オプションを1週間に20回変更して、見逃さないようにします。

私はそれらのプロジェクトを「バッシング」したくありません。それは驚くべきことであり、私は長い間使用し、時には今でも使用しています。この説明は、魚の利点を強調するための私の試みです

フィッシュシェルが救助に!このシェルは、すばらしい環境と、すぐに使用できるフル機能の構成を提供します。

Fishの私のお気に入りの機能は次のとおりです。

  • すでに実行したコマンドのオートコンプリート機能が優れており、これだけで日々の作業が速くなり、ストレスが軽減されます。
  • コマンドの入力を開始し、を押しますup以前にそのコマンドを使用したシェル履歴のすべての時間を表示するためのキー。
  • Fishはどのシステムにもインストールでき、どこでも同じように機能します。カスタマイズしすぎて、凝ったものを手に入れる必要はありません。

スクリプティングに関しては、Bashスクリプティングとはかなり異なりますが(より良い方法ではIMHO)、プレフィックスが付いているBashスクリプトを実行できます。#!/bin/bash

インストールの直後に、あなたはそれらの素晴らしいものを手に入れます:

  • 構文の強調表示
  • 素敵なプロンプト
  • オートコンプリート
  • マニュアルページのヒントを使用したパラメータの提案
  • Webベースの構成

そして私の意見では、最も初心者に優しいシェルです。

私が気づいた面白いことの1つはホームページでした。最初は、それが過去の遺物であるかどうか理解できませんでした。

グラフィカルコンピュータを使用している幸運な少数の人のために、色を設定し、関数、変数、および履歴をすべてWebページから表示できます。

それから私はそれがプログラマーのユーモアであることに気づき、それは私を笑わせました。技術は常に楽しいはずですよね?

まず最初に:シェルとは何ですか?

シェルは、基盤となるオペレーティングシステムへのインターフェイスです。テキストやコマンドを使用して操作を実行でき、スクリプトを作成できるなどの高度な機能をユーザーに提供します。

インストール

実行してFishをインストールしますbrew install fishmacOSで。

私をチェックしてくださいmacOSターミナルガイド

fishにインストールされています/usr/local/bin/fish

それはすでにあなたの道にある可能性が高いので、実行しますfishFishシェルを開始するには(タイプexitデフォルトのシェルに戻るには)

構成

Fishの良いところは、Webベースの構成です。実行fish_configWebクライアントを起動します。

configuration

ここからできます

  • 事前定義されたもののリストから配色を選択します
  • 事前定義されたもののリストからプロンプトを選択します
  • 構成されたFish関数と変数を検査します
  • コマンド履歴を見る

構成はに保存されます~/.config/fishフォルダー。ここで、(オプションの)Webベースの構成を使用せずに編集できます。

Fishの機能:構文の強調表示、オートコンプリート、およびマニュアルページのヒントを使用したパラメーターの提案

Fishを使用すると、システムで使用可能な通常のUnixコマンドを実行できます。ファイルシステムの操作、例:

  • lsファイルを一覧表示するには
  • cdフォルダを変更するには
  • rmファイルまたはフォルダを削除するには
  • mvファイルを別のフォルダに移動したり、ファイル名を変更したりするには
  • cpファイルをコピーするには

これらのコマンドの1つを実行した場合(またはanyコマンド、本当に)あなたが入力した単語が異なる色になるのを見始めるでしょう。コマンドを読んで理解するのが本当に簡単になります。

魚はオートコンプリートも追加します。走ったらcd ~/.config/fish/以前、そして今あなたはタイプしますcd、Fishは入力したいコマンドを提案し、右矢印を押して提案を受け入れます(または、入力を続けてコマンドを変更できます)。この提案は、コマンド履歴とファイルパスに基づいています。

オートコンプリートに基づく提案は、コマンドでも機能します。ここに入力しましたc押したタブ:

autocomplete commands

Fishは、パラメータとその使用方法も提案します。タイプls -を押してtab。使用できるパラメーターとその意味のリストを以下に示します。

autocomplete

このインラインヘルプは、マニュアルページ、役立つシェルヘルプ(実行してみてくださいman ls完全なヘルプについて)。

Fishをデフォルトのシェルとして設定する

Fishを試してみて、デフォルトのシェルにしたい場合は、ファイルを開きます/etc/shells。私が使うpicoこれらの小さなファイルの編集を行うには、pico /etc/shells、ただし、VS Codeを使用した場合でも、任意のエディターを使用できます。code /etc/shells

次のようなものが含まれている必要があります。

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh

最後にこの行を追加して、Fishシェルを追加します。

/usr/local/bin/fish

next, run

chsh -s /usr/local/bin/fish

enter your password, and the shell will change for your user.

change shell

Plugins

You can install Fish plugins.

Fisher is a popular Fish package manager.

Install it using

curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

and it’s available with the fisher command.

Now a package can be installed using fisher add <github-repository-path> and removed using fisher rm <github-repository-path>.

List all plugins installed using fisher ls.

Run fisher to update all the packages you installed.

Popular plugins are

Here is a list of packages you can install.

POSIX compliance

Various shells comply with the POSIX shell command standard.

POSIX means

  • Portable
  • Operating
  • System
  • Interface
  • X (for Unix)

and it’s a standard meant to unify the various Unix environment that were built over time. There is a shell command standard subset, which is meant as a way to unify how Unix shells work.

Unix is a specification/standard for a family of operating systems. Linux and macOS are based on Unix (Windows is not).

bash, ksh and others are POSIX compliant. Being POSIX compliant makes scripts written with POSIX compatibility work across POSIX compliant shells.

Fish (like sh or csh for example) is not compliant, so it’s not a POSIX shell, and this means that writing commands and scripts for Fish is different. Scripts written for Fish won’t work outside of Fish. Just like csh scripts only work on csh (and derivatives)

Why is it different? Various reasons, but I imagine having to support POSIX means the shell must adhere to a common language that might interfere with the shell philosophy and way of working. Not everyone want to have that baggage of tech to support forever.

This will very rarely be a problem with executing commands, but you need to keep it in mind when it comes to scripting and programming.

Download my free Linux Commands Handbook


More cli tutorials: