この記事では、Linux システムにおけるシェル プログラミングに関する知識を提供します。シェル プログラミングを学ぶ前に、まずシェルとは何か、シェル スクリプトとは何かを知っておく必要があります。この記事が皆さんのお役に立てれば幸いです。
#1. シェルとは何ですか# 1. シェル プログラミングを学ぶ前に、まずシェルとは何かを知る必要があります## シェルはアプリケーションであり、コマンド インタプリタとも言えます。ユーザー Linux カーネルと Linux カーネル間のブリッジは、グラフィカル インターフェイス上でのユーザーの操作やターミナルに入力されたコマンドを Linux カーネルに渡すことができ、Linux カーネルはユーザーの操作を完了するためにさまざまなハードウェアやその他のリソースをスケジュールします。
Linux カーネルとは何ですか? Linux オペレーティング システムでは、コンピュータ ハードウェアを実際に操作して特定のユーザー機能を実行できる部分を Linux システムのカーネルと呼びます。ユーザーが Linux システムを使用する場合、カーネルを直接操作することはできませんが、シェルを通じて間接的にカーネルを操作します。シェルはカーネルの一部ではなく、Linux カーネルの外部で開発されたアプリケーションであり、受け取ったユーザーのマウス クリック操作または入力コマンドをカーネルに渡し、カーネルは指定された操作を完了するようにハードウェアをスケジュールします。これにより、ユーザーはカーネルを直接操作する必要がなく、シェルを介して間接的にカーネルを操作するため、カーネルが外部に直接公開されることがなくなり、カーネルのセキュリティが確保され、ユーザーの操作が簡素化されます。 シェル このアプリケーションはブート時に起動され、Linux システムを操作するとき、常にシェルを通じて直接または間接的に Linux カーネルを操作します。実際、グラフィカル インターフェイスが登場する前は、ユーザーはターミナルやコンソールから直接シェル アプリケーションを呼び出し、コマンドを入力して Linux システムを操作していました。ユーザーがコンソールまたは端末に表示する $ と # は、実際にはシェル コマンド プロンプトであり、ユーザーがシェル プログラムに入り、シェルを通じて Linux カーネルを操作するためにコマンドを入力するだけでよいことを示します。 root ユーザーがログインした場合は $ が表示され、一般ユーザーがログインした場合は # が表示されるだけです。また、シェルがユーザーの操作をカーネルに転送する処理は、カーネルが提供する API インターフェースを呼び出す処理です。たとえば、ユーザーがグラフィカル インターフェイスまたはターミナルのコマンド ラインでファイルを開く操作を実行すると、ユーザーの操作を受け取った後、シェルはカーネルが提供する対応する関数を呼び出し、カーネルはハードウェア リソースをスケジュールして、ファイルを開く操作を完了します。ユーザーの操作、操作。
2. 共通シェル
sh:
sh の正式名は Bourne シェルであり、UNIX の標準シェルであり、多くの UNIX バージョンには sh が搭載されています。 sh は最初に普及したシェルでした。(2) csh:
このシェルの構文は C 言語に似ているため、C シェル (略して csh) と呼ばれます。(3) tcsh:
tcsh は csh の拡張バージョンで、コマンド補完機能が追加され、より強力な構文サポートが提供されます。(4) ash:
占有リソースが少なく、低メモリ環境での実行に適しており、bash シェルと完全な互換性がある軽量シェル。(5) bash: bash シェルは GNU 組織によって開発され、sh シェルとの互換性を維持しており、さまざまな Linux ディストリビューションで構成されているデフォルトのシェルです。
Linux システムでは、通常、デフォルトのシェルは bash シェルです。シェルはアプリケーション プログラムであり、通常は /bin
または /user/bin
ディレクトリに配置されます。現在の Linux システムで利用可能なシェルはすべて /etc に記録されます。 /shells
ファイル。
(1) システムで現在利用可能なシェルを表示するには、コマンド [cat -n /etc/shells] を実行します。
(2)システムの現在のデフォルトを表示するには シェルを使用するには、コマンド [echo $SHELL] を実行します。
(3) 各ユーザーが使用するシェルを表示するには、次のコマンドを実行します。コマンド [cat -n /etc/passwd]:
シェルがアプリケーションであることはすでにわかっています。このアプリケーションは、ユーザーの操作コマンドを Linux カーネルに渡すだけでなく、プログラミングもサポートします。シェルは一連のプログラミング言語構文に対応し、この一連の言語はシェル プログラミング言語またはシェル スクリプト言語と呼ばれます。シェル プログラミング言語は、JavaScript 言語と同様のスクリプト言語であり、コンパイルを必要とせず、インタプリタはシェル アプリケーションそのものです。
私たちが日々の仕事で話しているシェルは、ほとんどの場合、シェル アプリケーションではなく、シェル スクリプト言語を指します。
シェル スクリプト言語を使用すると、Linux システムの他の操作コマンド (ls、grep など) と組み合わせて使用できます。 )、シェル スクリプトを使用します。この言語は他のコマンドと組み合わせて、特定の機能を完了できる .sh 拡張子の付いたテキストを記述します。これはシェル スクリプトと呼ばれます。
シェルには多くのバージョンがあり、各バージョンでサポートされるシェル スクリプト言語の構文が異なる可能性があることはすでにわかっています。また、以下のシェル スクリプトの例はすべて、このバージョンの Bash シェル用です。
(1) ルート ディレクトリに新しい Hello.sh スクリプトを作成します: [vim Hello.sh]
(2) 次に、次の内容を入力します:
#!/bin/bash echo "Hello World "
最初の行: #! は、このスクリプトのインタープリターとして使用するシェルのバージョンをシステムに伝えることができる規則マークです。続く /bin/bash はシェルのパスなので、[#!/bin/bash] bin ディレクトリ内の bash シェルは、このスクリプトのインタープリタとして機能します。
2 行目: [echo "Hello World"] は、出力テキスト Hello World! を意味します。 ;
(3) 次に保存して終了します: [!wq];
(4) このようにして、Hello World! を出力できます。スクリプトが完成しました。
追加説明:
シェル プログラムはシェル スクリプト言語のインタプリタであるとすでに述べました。ターミナル (たとえば、次のように Linux サーバーのターミナルに接続します)たとえば、変数を宣言し、変数の値を出力します:
(1) コードを入力します: [name=Zhang San]。これは、変数名が定義され、その値が Zhang San であることを意味します。
(2) コードを入力します: [echo $name]。これは変数名の値を出力することを意味します。
## もちろん、この方法は、コードが 1 文または 2 文だけの単純な実行ロジックにのみ適していますが、ほとんどの場合、依然としてシェル プログラミング コードを .sh 形式で記述します。スクリプトを実行して、再度実行してください。上記では、Hello World! を出力できるスクリプトを作成しました。シェル スクリプトが実行されました。次に、Hello.sh スクリプトを実行する必要があります。シェル スクリプトを実行するには 2 つの方法があります:
最初の方法は、.sh テキストの実行権限を与えてから、テキストを実行することです:
(1)最初にシェルにスクリプト実行権限を与えます: [chmod x
Hello.sh
];
(2) 直接実行: 絶対パス: [/Hello.sh] または相対パス: [./Hello.sh [
注意: ここで実装するときに相対パスを使用する場合は、現在のパスを示すために ./ で始める必要があります。そうしないと、スクリプトが実行されず、実行が失敗します。
# bashシェルはプログラムであり、hello.shスクリプトをシェルのパラメーターとして渡します:[/bin/bash hello.sh]または[bash hello.sh ]
(2) ここで、この方法でシェル スクリプトを実行する場合、どのバージョンのシェルをインタプリタとして使用するかを宣言する必要がないことに注意してください。シェル スクリプトの最初の行、つまり、スクリプトの実行に使用するコマンド [/bin/bash Hello.sh] がすでに指定されているため、このコード行 [#!/bin/bash] は必要ありません。インタプリタとして使用するシェルのバージョン。
この方法で実行される。最初の実行方法を使用することに違いはありません。 関連する推奨事項: 「Linux ビデオ チュートリアル
」以上がLinux システムでのシェル プログラミングを完全にマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。