コンテンツ
出典:Tomasz Bidermann / Dreamstime.com
取り除く:
UnixおよびLinuxシェルは非常に強力で、非常にカスタマイズ可能です。
UnixおよびLinuxシステムのコマンドラインは既に非常に強力ですが、シェルは見た目以上に強力なツールです。方法を知っていれば、カスタマイズして心のコンテンツに切り替えることができます。シェルとは何ですか?
ほとんどすべてのUnixおよびLinuxのマニュアルには、オペレーティングシステムを囲むシェルの標準的な図があり、ある種のキャンディバーに似ています。シェルは、カーネル、ファイルシステム、さまざまなシステムコールとユーザーを含むオペレーティングシステム間のインターフェイスにすぎません。長年にわたり、1980年代にグラフィカルユーザーインターフェイスが一般的になるまで、唯一の対話型ユーザーインターフェイスでした。グラフィカルユーザーインターフェイスは、プログラムの起動、システムの構成、ファイルの管理など、同じ機能の多くを提供するため、シェルの一種と考えることもできます。これらの謙虚なインターフェイスには驚くほどのパワーがあります。一つには、それらは本格的なプログラミング言語です。 Pythonのようなさらに強力なスクリプト言語が登場する前は、シェルスクリプトは必ずしもCの力を必要としないプログラムを作成するのに理想的でした。システムタスクの自動化やラピッドプロトタイピングに依然として有用です。
また、ファイルの操作と検索を容易にする多数の機能も備えています。最も広く使用されているものの1つは、「ワイルドカード」または「グロビング」です。ほとんどすべてのUnixおよびLinuxユーザーは、任意の文字に一致するワイルドカード「*」に精通しています。これは実際にはシェルの仕事です。異なるシェルにはさらに強力なオプションがあります。
Unixの特徴的な機能の1つは、プログラムの入出力をリダイレクトする機能です。シェルはこの機能を実装しています。
シェルは別のプログラムであるため、適切なスキルを備えたプログラマーが作成することは可能です。長年にわたって出現したいくつかの主要なシェルがありました。
シェルの歴史とまとめ
オペレーティングシステムの初期にはいくつかのUnixシェルがありましたが、Bell Labs以外で最初に認知されたのは、スティーブンR.ボーンにちなんで名付けられたボーンシェルでした。シェルの主な革新は、構造化プログラミングの機能をサポートし、シェルを初めて実際のプログラミング言語として使用できるようになったことです。通常、Bourneシェルをエミュレートする新しいシェルの1つですが、現在のUnixおよびLinuxのすべてのバージョンでまだ使用されているため、これは不可欠です。次の主要なシェルはCシェルで、一般に「csh」と略されます。このシェルはUC Berkeleyで開発され、BSDフレーバーの主要なコンポーネントになりました。名前が示すように、その構文はCプログラミング言語に似ているように設計されていますが、実際にはインタラクティブな使用のために設計されています。
これには、ユーザーが行全体を再入力しなくても以前に発行したコマンドに戻って繰り返すことができる履歴メカニズムが含まれ、ジョブ制御が改善され、複数のタスクの実行が容易になりました。 (これは、ほとんどの人がまだベースの端末を使用していた時代であったことを思い出してください。)
次の主要なシェルはKornシェルで、これもベル研究所から出てきました。ちなみに、シェルはバンドではなく、David Kornにちなんで命名されました。 Kornシェルの主な革新は、コマンドライン編集の導入であり、履歴機能をさらに拡張します。ユーザーは戻って、viまたはEmacsエディターのいずれかと同様のコマンドを使用して、入力したコマンドを編集できます。
主要なシェルのうち、ボーンアゲインシェル(bash)は、80年代後半に導入されて以来最も人気があります。 GNUプロジェクトの一部として開発されたこのシェルは、Bourneシェルとの互換性を維持しながら、CシェルとKornシェルの革新を取り入れています。ほとんどのLinuxディストリビューションの「標準」シェルです。
1990年に最初にリリースされたZ Shell(zsh)は、コマンドラインユーザーの夢です。他のシェルが持っている他の主要な機能のほとんどを備えているだけでなく、多くの強力な機能でめちゃくちゃカスタマイズ可能です。最も強力な方法の1つは、再帰的なグロビングです。これにより、ユーザーは、現在の作業ディレクトリ内のファイルではなく、コマンドを発行するときにサブディレクトリ内のファイル名を照合できます。本当に上級のユーザーは、補完オプションをカスタマイズして、完全に入力しなくてもファイルを一致させることができます。また、太い指のタイピストにとっては、スペルを修正することもできます。このシェルは非常に高度で、そのマニュアルページはいくつかの非常に長いセクションに分割されています。
スクリプティング
前述のように、シェルは単なるコマンドラインインターフェイスではなく、強力なプログラミング言語です。シェルスクリプトの利点は、通常のインタラクティブな使用とスクリプトの両方で同じ言語を使用できることです。これにより、学習曲線がより平坦になります。最新のシェルには、フロー制御、関数、変数など、通常のプログラミング言語機能がすべて含まれています。それらのいくつかは、連想配列のような高度なデータ構造さえ持っています。それらの力にもかかわらず、シェルでのプログラミングにはいくつかの落とし穴があります。最大の問題は、別のシステムにない可能性のあるプログラムに依存するスクリプト、または特定のフレーバーのUnixまたはLinuxに依存するスクリプトを書くのが簡単すぎることです。そのため、シェルスクリプトは、1つのシステムでのみ実行されることがわかっているプログラムに最適です。移植性のあるものを作成しようとしていて、Cプログラムを書きたくない場合は、PerlやPythonなどの別のスクリプト言語で書くことをお勧めします。