シェル自体は C 言語で書かれたプログラムであり、ユーザーの作業のほとんどはシェルを通じて行われます。シェルはコマンド言語であると同時にプログラミング言語でもあります。コマンド言語として、ユーザーが入力したコマンドを対話的に解釈して実行し、プログラミング言語として、さまざまな変数やパラメーターを定義し、ループや分岐などの高級言語でのみ見られる多くの制御構造を提供します。
これは Unix/Linux システム カーネルの一部ではありませんが、システム コアのほとんどの機能を呼び出して、プログラムを実行し、ファイルを作成し、さまざまなプログラムの実行を並行して調整します。したがって、ユーザーにとって、シェルは最も重要なユーティリティ プログラムであり、シェルの特性と使用法を深く理解し、習熟することが、Unix/Linux システムを使いこなすための鍵となります。
シェルの使用の習熟度は、ユーザーの Unix/Linux の使用習熟度を反映していると言えます。
シェルにはコマンドを実行する 2 つの方法があります:
インタラクティブ (対話型): ユーザーのコマンドを解釈して実行します。ユーザーがコマンドを入力すると、シェルがそれを解釈して実行します。
バッチ: ユーザーは、多くのコマンドを含むシェル スクリプト (スクリプト) を事前に作成します。これにより、シェルは、コマンドを 1 つずつ入力することなく、これらのコマンドを一度に実行できます。
シェル スクリプトは、変数やフロー制御ステートメントも備えていますが、シェル プログラムはこれらのコマンドを 1 行ずつ読み取って実行するため、コンパイルする必要はありません。スクリプト (ユーザーに相当) スクリプトのコマンドをシェル プロンプトに 1 行ずつ入力して実行します。
シェルの初心者は、日常のアプリケーションでは、シェルを実行するために root アカウントを使用しないことをお勧めします。通常のユーザーは、意図的か非意図的かにかかわらず、システムに損害を与えることはできませんが、root の場合は、数文字を入力するだけで壊滅的な結果を招く可能性があります。
Unix/Linux 上の一般的なシェル スクリプト インタプリタには、bash、sh、csh、ksh などが含まれます。これらを一種のシェルと呼ぶのが通例です。シェルには何種類があるかについてよく話されますが、実際に話しているのはシェル スクリプト インタプリタのことです。
bash は Linux の標準のデフォルト シェルです。このチュートリアルも bash に基づいています。 bash は Brian Fox と Chet Ramey によって完成されました。これは BourneAgain Shell の略称で、合計 40 の内部コマンドがあります。
Linux は、次のような機能があるため、これをデフォルトのシェルとして使用します:
DOS の doskey に似た機能を使用して、矢印キーを使用してコマンドをすばやく入力および変更できます。
一致するものを検索して、特定の文字列で始まるコマンドを自動的に与えます。
には独自のヘルプ機能が含まれており、プロンプトの下に「help」と入力するだけで、関連するヘルプが表示されます。
shはSteve Bourneによって開発され、Bourne Shellの略称であり、Unixの標準のデフォルトシェルです。
ash シェルは Kenneth Almquist によって作成されました。Linux で最も少ないシステム リソースを使用する小さなシェルです。内部コマンドは 24 個しか含まれていないため、使用するのは非常に不便です。
csh は、William Joy を代表とする合計 47 人の作者によってコンパイルされた Linux の比較的大きなカーネルであり、合計 52 の内部コマンドがあります。このシェルは実際には /bin/tcsh などのシェルを指します。つまり、csh は実際には tcsh です。
ksh は、Eric Gisin によって書かれた Korn シェルの略称で、合計 42 個の内部コマンドがあります。このシェルの最大の利点は、ksh の製品版とほぼ完全な互換性があるため、製品版を購入するためにお金を費やすことなく製品版のパフォーマンスを試すことができることです。
注: bash は Bourne Again Shell の略称で、Linux の標準のデフォルト シェルです。これは Bourne シェルをベースにしており、C シェルと Korn シェルのいくつかの機能を吸収しています。 bash は sh と完全な互換性があります。つまり、sh で書かれたスクリプトは変更せずに bash で実行できます。
Fortran、Ada、Pascal、C、C++、Java などの従来のプログラミング言語の多くはコンパイル言語です。この種の言語では、作成したソースコードをあらかじめオブジェクトコード(オブジェクトコード)に変換する必要があります。この作業を「コンパイル」といいます。
プログラムを実行するときは、オブジェクトコードを直接読み込んでください。コンパイルされたオブジェクトコードはコンピュータの最下層に近いため、実行効率が非常に高く、これがコンパイル言語の利点です。
ただし、コンパイル言語はほとんどが最下位レベルで動作し、バイト、整数、浮動小数点数、その他のマシンレベルのオブジェクトを処理するため、単純な関数の実装には多くの複雑なコードが必要になります。たとえば、C++ では、「あるディレクトリ内のすべてのファイルを別のディレクトリにコピーする」といった単純な操作を実行するのは困難です。
インタープリター言語は「スクリプト言語」とも呼ばれます。この種のプログラムを実行する場合、インタプリタは作成したソース コードを読み取り、それをオブジェクト コードに変換し、コンピュータで実行する必要があります。プログラムを実行するたびに余分なコンパイル処理が発生するため、効率が低下します。
スクリプト プログラミング言語を使用する利点は、ほとんどがコンパイル言語よりも高いレベルで実行され、ファイルやディレクトリなどのオブジェクトを簡単に処理できることです。欠点は、通常、コンパイル言語ほど効率的ではないことです。ただし、トレードオフとして、通常はスクリプト プログラミングを使用する価値があります。作成に 1 時間かかる単純なスクリプトでも、C または C++ で同じ関数を実装するには 2 日かかる場合があり、一般にスクリプトの実行速度が速いです。人々がそのパフォーマンスの問題を無視できるほど十分な速度です。スクリプト プログラミング言語の例には、awk、Perl、Python、Ruby、Shell などがあります。
単純さ: シェルは高級言語であり、それを介して複雑な操作を簡潔に表現できます。
移植性: POSIX で定義された関数を使用すると、スクリプトを変更せずに別のシステムで実行できます。
開発が簡単: 強力で便利なスクリプトが短時間で完成します。
以上がシェルプログラミングの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。