シェルが Bash と Zsh だけに限定されていると考えている場合は、考え直してください。 Linux の哲学に忠実に、シェルは交換可能なプログラムの 1 つです。場合によっては顕著な効果をもたらします。
この代替オプションのセットは、機能満載の製品から特定のプログラミング言語の使用を拡張するシェルまで、幅広いオプションをカバーしています。
Fish、フレンドリーでインタラクティブなシェル
これらの代替手段の中で最もよく知られているのは Fish ですが、このシェルがデフォルトになることはほとんどないため、聞いたことはあっても試したことはないでしょう。ただし、シェルの変更は非常に簡単で、変更を永続的に行う前に Fish out を試すことができます。
まずはインストールしてください brew install fish、 pacman -S fish、 dnf install fish、またはディストリビューションに適切なパッケージをダウンロードします。
デフォルトが Fish のディストリビューションが本当に必要な場合は、CachyOS をチェックしてください。
インストールしたら、実行するだけです fish ターミナルにログインすると、多くの追加機能を備えた新しいカラフルなコマンド ラインが表示されます。
Fish の最も有名な機能は、構文の強調表示とオートコンプリートです。前者は、存在しないコマンドや一致しない括弧を検出して、入力時にエラーを修正するのに役立ちます。後者は、コマンド固有のオプションや Makefile ターゲットなどの提案を提供します。
このシェルはスクリプトを最前線に置き、プロンプトに対するそのアプローチはこれを示しています。ほとんどのシェルのように特殊な書式設定文字を含む文字列を定義する代わりに、fish は関数を使用してプロンプトを動的に生成します。この関数を変更すると、他の関数よりも動的で状況に応じたプロンプトを生成できます。
Wish、GUI プログラマのためのシェル
この珍しいシェルはニッチという用語を極端に解釈していますが、勇敢な探検家なら、チェックしてみるとよいでしょう。 Wish はクロスプラットフォーム GUI ツールキットである Tcl/Tk の仲間であるため、実際にはターミナル環境とこのフレームワークを組み合わせる方法です。
このリストで Wish をユニークなものにしているのは、もう 1 つあります。おそらく、すでにインストールされているはずです。 Tcl/Tk はこのシェルをバンドルしており、ほとんどの Linux ディストリビューションと macOS にこれが含まれています。
対話モードでは、Wish のプロンプトを使用して、次のような Tcl/Tk コマンドまたはスクリプトを実行できます。これにより、赤いウィンドウ内に黄色の四角形が作成されます。
canvas .myCanvas -background red -width 200 -height 200
pack .myCanvas
.myCanvas create rectangle 50 50 100 80 -fill yellow
明確にしておきますが、このシェルに本当に興味があるのは、あなたが Tcl/Tk プログラマであるか、プログラマになりたいと考えている場合だけです。ただし、シェルと緊密に統合されたシンプルな GUI アプリを作成できる機能は見逃せません。Wish は、クロスプラットフォーム プログラミングへの障壁を大幅に下げるのに役立ちます。
エルフ、未来の殻
Elvish は、最新のプログラミング技術をスクリプト言語に統合した、本当に新しいエキサイティングなシェルです。非常に使いやすい対話型インターフェイスを備えているため、プログラミングの専門家にも、より使いやすいシェルを探している人にも最適です。
このシェルを使用するには、スクリプトをダウンロードして実行する必要があります。オプションはさまざまなオペレーティング システムとアーキテクチャで利用できます。
Elvish について最初に気づくのは、現在のプロンプトの最後にユーザー名とホストが表示される習慣です。しかし、次に気づくであろう違いは、便利なオートコンプリートです。
Tab キーを押すと、選択可能なコマンドまたはファイル名のグリッドが表示されます。 Elvish の履歴ナビゲーションもシンプルかつ直感的で、すでに入力した文字に対して個々の項目をフィルター処理します。ロケーション履歴もあり、以前の作業ディレクトリにすばやくアクセスできます。
しかし、Elvish はこれよりもさらに奥深いものであるため、専門家ユーザーは時間を投資するだけの価値があるでしょう。シェルの能力は、おそらく構造化データの使用によって最もよく実証されます。ほとんどのシェルは、データ通信の単一タイプとしてテキストを使用します。つまり、すべてが文字列です。しかし、Elvish は、文字列、数値、ブール値、リスト、さらにはマップや関数を第一級の型として提供します。
シェルは、バイト指向の標準出力ストリームとともに値チャネルを導入することで、これらの型をサポートします。 echo の代わりに put コマンドを使用すると、構造化された値がこのチャネルに書き込まれます。これは事実上、文字列の解析に必要なコードが少なくなり、スクリプトがより確実にデータを渡すことができることを意味します。
Xonsh、Pythonista の選択肢
もう 1 つの言語固有のシェルである Xonsh は、シェル環境と Python を組み合わせて、パワー ユーザー エクスペリエンスを実現します。 Xonsh は自らを「Python のシェル」および「シェル内の Python」と表現し、この組み合わせが各部分の合計よりも優れていることを強調しています。これは、2 つを効果的に組み合わせたコマンドで明らかです。
len($(curl -Ls https://xon.sh))ここでは、Python len 関数が使い慣れた構文で呼び出され、コマンドの結果を置き換えます。この場合はカールします。 Wish と同様、Xonsh では言語固有のステートメントと並行してクラシック シェル コマンドを実行できるため、この 2 つを自由に切り替えることができます。
Xonsh のチュートリアルは優れており、すべての基本事項がカバーされており、さらに、従うことができるいくつかのサンプル プロジェクトが含まれています。これらは、履歴やタブの補完からイベントや拡張機能まで、あらゆるものをカバーします。
Python は初心者に最適な言語であるため、Xonsh はシェル プログラミングについて学ぶ最良の方法の 1 つである可能性があります。