記事ディレクトリ
シェル
シェルとは
シェル(シェルプログラム)は、システムのユーザーインターフェイスであり、ユーザーがカーネルと対話するためのインターフェイスを提供します。ユーザーが入力したコマンドを受信し、実行のためにカーネルに送信します。
実際、Shellはコマンドインタープリターであり、ユーザーが入力したコマンドを解釈してカーネルに送信します。それだけでなく、シェルにはコマンドを編集するための独自のプログラミング言語があり、ユーザーはシェルコマンドで構成されるプログラムを作成できます。シェルプログラミング言語には、通常のプログラミング言語の多くの特徴があります。たとえば、ループ構造や分岐制御構造などがあります。このプログラミング言語で記述されたシェルプログラムは、他のアプリケーションと同じ効果があります。
アプリケーションプログラムを操作できるソフトウェアをシェルプログラムと呼ぶことができる限り、ナローシェルプログラムは、この記事で後述するBASHなどのコマンドラインソフトウェアを指します。ブロードシェルプログラムには、グラフィックスのため、グラフィカルユーザーインターフェイスモードのソフトウェアが含まれます。ユーザーインターフェイスは、さまざまなアプリケーションを操作してカーネルワークを呼び出すこともできます
BASH
BASHとは
Shellには、その開発に応じてさまざまなバージョンがあります。BASHはその1つであり、BASH(Bourne Again Shell)はLinuxでデフォルトで使用されるバージョンです。
シェル可変機能
変数
変数は、コンピュータシステムが変数値を格納するために使用するデータタイプです。対応する変数値は、変数名から直接抽出できます。これは、いくつかの設定または予約済みデータの文字列を単語または記号のセットに置き換えることです。
環境変数
Linuxシステムでは、環境変数を使用して、各ユーザーのさまざまなホームディレクトリ(HOME)やメールの保存場所(MAIL)など、システムの動作環境のいくつかのパラメータを定義します。カスタム変数と区別するために、環境変数は通常大文字で表されます
マルチユーザーおよびマルチタスクのオペレーティングシステムとして、Linuxは各ユーザーに独立した適切な作業環境を提供できます。したがって、同じ環境変数は、ユーザーIDが異なるため、値が異なります。以下に示すように:
変数の使用と設定:echo、=、unset
echo:echoコマンドを使用して変数を使用できます。変数を使用する場合は、前にドル記号$を付ける必要があります。たとえば、PATH変数の内容を表示するには:
echo $PATH
=:=を使用して、変数の内容を設定または変更します。たとえば、myname変数の内容をWangGarrisonに設定するには、次のようにします。
myname=WangGarrison
変数を設定するときは、特定の規制を満たしている必要があります。そうでない場合、設定は失敗します。ルールは次のとおりです。
- 可変および可変コンテンツは=で接続されます
- 等号の両側にスペースを入れることはできません
- 変数名は英語の文字と数字のみで、数字で始めることはできません
- 変数の内容にはスペースがあります。一重引用符または二重引用符を使用して変数を囲むことができます
unset:unsetは変数をキャンセルできます。たとえば、mynameの設定をキャンセルできます。
unset myname
環境変数の機能
環境変数は、ルートディレクトリ(ホームフォルダ)の変換、プロンプト文字の表示、ファイル検索を実行するためのパスなど、多くの機能を実現するのに役立ちます。
envコマンドとexportコマンドを使用して、現在のシェル環境のデフォルトの環境変数を表示できます。envはenvironmentの略です。
env
Linuxの10の重要な環境変数は次のとおりです。
環境変数名 | 効果 |
---|---|
ホームホーム | ユーザーのホームディレクトリ |
シェル | ユーザーが使用するシェルインタープリター名 |
道 | ファイル検索を実行するパス |
編集者 | ユーザーのデフォルトのテキストインタープリター |
ランダム | ランダム番号変数 |
LANG | 言語データ |
履歴サイズ | 出力された履歴コマンドレコードの数 |
HISTFILESIZE | 保存された履歴コマンドレコードの数 |
PS1 | バッシュ通訳のプロンプト |
郵便物 | メールを保存するパス |
setコマンドを使用して、すべての変数(環境変数とカスタム変数を含む)を表示します
set
カスタム変数を環境変数に変換する
カスタム変数と環境変数の主な違いは、環境変数は引き続き子プロセスによって参照されますが、カスタム変数は参照されないことです。親プロセスと子プロセスの相関関係は次のとおりです。
子プロセスは親プロセスの環境変数のみを継承し、子プロセスは継承しません。親プロセスのカスタム変数を継承します。したがって、元のbashカスタム変数は、子プロセスに入った後は子プロセスで使用できず、子プロセスが終了するまで使用できません。
したがって、親プロセスのカスタム変数を子プロセスで使用する場合は、カスタム変数を環境変数に変換し、exportコマンドを使用して変換する必要があります。
export 变量名称
可変キーボード読み取り、配列および宣言
read:キーボードから入力された変数を読み取るために使用されます。ユーザーとの対話に使用できます。
read [-pt] variable #-p后面可以接提示字符 -t后面可以接等待的秒数
宣言、タイプセット:宣言またはタイプセットは同じ関数であり、変数のタイプを宣言します
declare [-aixr] variable
-a:将后面名为variable的变量定义成为数组(array)类型
-i:将后面名为variable的变量定义成为整数(integer)类型
-x:用法与export一样,就是将后面的variable变成环境变量
-r:将变量设置成为readonly类型,该变量不可被更改内容,也不能unset
次の図に示すように、デフォルトでは、変数タイプはデフォルトで文字列になり、変数aはデフォルトで文字列2 + 3 +4
配列変数タイプになります。
var[index]=content #数组名为var,下标是index,内容是content,
例えば:
コマンドエイリアスと履歴コマンド
コマンドエイリアス設定:エイリアス、unalias
alias lm='ls -al | more' #把ls -al |more命令简化为lm
エイリアスを直接入力して、現在使用可能なコマンドエイリアスを確認できます。以下に示すように:コマンドエイリアスを削除します
unalias lm
履歴コマンド
history [n]
history [-c]
history [-raw]
选项与参数:
n:列出最近的n条命令行表
-c:将目前的shell中的所有history内容全部清除
-a:将目前新增的history命令新增入histfiles中,若没有histfiles,则默认写入~/.bash_history
-r:将histfiles的内容读到目前这个shell的history中
-w:将目前的history记录内容写到histfiles中
bashを使用してLinuxホストにログインすると、システムは以前に実行されたコマンドをホームディレクトリ〜/ .bash_historyからアクティブに読み取ります。このディレクトリに記録されるデータの数は、bashの環境変数HISTFILESIZEに関連しています。
シェルスクリプト
ShellScriptとは
シェルスクリプトは、シェル用に作成されたスクリプトであるシェルスクリプトです。シェルで指定された文法とコマンドの一部を、通常の式、パイプラインコマンド、データストリームのリダイレクトなどの関数とともにプレーンテキストファイルに書き込んで、必要な処理目的を達成してから、「。sh」拡張子を追加します。 、これは「シェルスクリプト」です
つまり、Shellツールを使用してコマンドやその他の要求を解釈するだけで、コンピューターと正常に通信できます。同時に、コマンドをバッチで処理できる「プログラム」であるShellスクリプトを使用すると、コンピューターとの通信が向上します。
参考書
「NiaogeのLinuxプライベートキッチン」第4版第10章BASHの理解と学習