Linuxのシステム管理 - 章V
Linuxの-bashshell
アウトライン
シェルとは何ですか
オペレーティングシステムのシェルとしてシステムシェルLinuxは、オペレーティング・システムを使用してユーザインタフェースを提供します。これは、コマンド言語インタプリタと総称コマンドプログラミング言語です。
シェルはユーザプログラムとLinuxカーネルとの間のインタフェースで、Linuxは想像カーネルの場合、カーネルの外殻の周りに、ある球の中心、。ときのLinuxへのシェルまたは他のプログラムからの転送コマンドは、カーネルはそれに応じて反応します。
シェルはコマンド言語インタプリタである、それはその、組み込みのシェルコマンド独自のシェルシステムは、他のアプリケーションから呼び出すことができました。ユーザ入力コマンドプロンプトで、その後、最初のLinuxカーネルを説明し、シェルから渡されました。
Linuxのザ・シェルは複数種類を有している、最も一般的なものは、Bourneシェル(SH )Cシェル(CSH )およびKornシェル(kshの)。
三種類のシェルは長所と短所があります。BourneシェルであるUN IX 元々で使用されるシェル、およびそれぞれUN IX に使用することができます。Bourneシェルでシェルはかなり良いプログラミングですが、他のいくつかのように良いとしてやってユーザとの対話に対処する上でのシェル。
Linuxのオペレーティングシステムでは、デフォルトのシェルがあり、Bourne Againシェル、それはBourneシェルと呼ばれる拡張機能、バッシュ、Bourneシェルは完全にある下位互換性、およびBourneシェルの多くの拡張機能に基づいて増加が。バッシュの/ binに/ bashのコマンド補完、コマンド編集、およびコマンド履歴リストおよびその他の機能などを提供することができます多くの機能を持っている、それはまた、多くの含まれているCシェルとKornシェル柔軟で強力があり、利点のをプログラミングはインターフェース、非常に友好的がありながら、ユーザーインターフェイスが。
bashシェルがデフォルトのシェルのLinuxであります
5.1 bashのシェルのチュートリアル
5.1.1 SHEEL文法
バッシュsheelラン
シェルコマンドのオプションパラメータは、各基本構成要素との間の空間によって分離されています。
[ルート@ Redhat7〜]#lsの-aを/ tmp /複数のパラメータを書き込むことができます
5.1.2ビューは、現在使用中のシェル
#エコー$ SHELL [Redhat7〜@ルート]は、
/ binに/ bashの
5.1.3ビューSHELLシステム利用可能
[ルート@ Redhat7〜]#猫の/ etc /シェル
/ binに/ shを
/ binに/ bashの
/ sbinに/ nologinに
/ usr / binに/ shを
/ usr / binに/ bashの
/ usr / sbinに/ nologinに
/ binに/ tcshの
/ binに/ CSH
5.1.4 bashの特性完了
最初のいくつかのBash sheelコマンドまたはパラメータを入力し、あなたはタブ補完を押すことができます。
5.1.5 Bashの特徴:コマンドショートカット
最もISを使用します
フォアグラウンドタスクを終了するには、Ctrl + C
Ctrlキー+ Lをクリアをクリアスクリーンと同等
Ctrlキー+カーソルが最初の行にジャンプします
Ctrlキー+ Eカーソルが最後にジャンプ
歴史ビューシステムコマンドの履歴
-wコマンド履歴は履歴ファイルに保存されます
-cコマンド履歴のクリア
N行目の履歴を削除する-dコマンド
[ルート@ Redhat7〜]#履歴
342のLS / etc / sysconfig / network-scriptsに/のifcfg-eno16777736
343猫/ etc / sysconfig / network-scriptsに/のifcfg-eno16777736
344のLS / etc / sysconfig / network-scriptsに/のifcfg-eno16777736
!行番号、固定回線のコマンドの実行
[ルート@ Redhat7〜]#!344
LS / etc / sysconfig / network-scriptsに/のifcfg-eno16777736
/ etc / sysconfig / network-scriptsに/のifcfg-eno16777736
!コマンドは、最近の実行を命じました
#!LS [Redhat7〜@ルート]
LS / etc / sysconfig / network-scriptsに/のifcfg-eno16777736
/ etc / sysconfig / network-scriptsに/のifcfg-eno16777736
5.1.6 bashの機能 - エイリアス
コマンドエイリアスのユーザーを使用して、多くの場合、単純化を使用した複雑なコマンドを作る、自分の所属作成するには、「aliasコマンドのエイリアス名=」コマンドを使用することができ
⼀コマンドエイリアスをキャンセルし、コマンドエイリアスは、エイリアス名コマンドを使用しては、unaliasです。
1 //定義一時的なエイリアスは、eth0のエイリアスを表示するためのカード⽹IF1
[xuliangweiルートを@〜]#= IF0エイリアスのifconfigコマンドはeth0 "
[xuliangweiルート@〜]#IF0
// 2.永続的にシステム効率⽣エイリアス、aliasコマンドの追加⾄現在のユーザー環境の設定が使用するファイルを定義し
、[xuliangweiルートを@〜]#エコー>>〜/ .bashrcに"= 'ifconfigコマンドeth0の' ifconfigコマンドエイリアス"
//としての意志aliasコマンドは、/ etc bashrcに、全世帯⽣効果の使用/⾄追加する
// 3.キャンセル、一時エイリアス
[ルート@ xuliangwei〜]#は、unalias ifconfigコマンド
の/ etc / bashrcに地球環境変数
ホームディレクトリの.bashrc、個々のユーザー環境変数
地球環境や個々のユーザー環境変数=グローバル等しいお母さんはあなたが盲目、個々の最終的な決定や、あなたを行かせます。
5.1.7バッシュ:コマンド実行処理
内部コマンド:プログラムに付属のシェルコマンド。
外部コマンド:システムのPATH変数のパスで実行可能なプログラム。
我々はそれがコマンドを実行すると、コマンドは、全体のプロセスを実行し、次のとおりです。
コマンドは絶対パスを実行するかどうかを決定する1
aliasコマンドがあるかどうかを決定する2
3.解析は、ユーザ入力コマンドSTARTは、内部または外部コマンドです
4.直接内部コマンドを実行し、外部コマンドバッファの存在を検出します
5.エラーがあればPATHを検出し、どんなには、YESあり
コマンドタイプの検出を入力
#タイプ-aでcd [Redhat7〜@ルート]
CDが内蔵されているシェル
cd 是 /usr/bin/cd
[ルート@ jsmongodb〜]#タイプの-aのmongod
mongodは/app/mongodb3.0/bin/mongodです
PATH変数の定義は、記憶された外部コマンドを実行するバッシュを使用するための場所を伝えることで、bashはこれらの経路で走査個々になります。
1つの変更の環境変数の個人的なコマンド
個人的な変更の環境変数
[ルート@ jsmongodb〜]#猫の.bash_profile
#.bash_profileの
#エイリアスと関数をゲット
もし[-f〜/ .bashrcに]。それから
。〜/ .bashrcに
されます
#ユーザー固有の環境やスタートアッププログラム
PATH = $ PATH:$ HOME / binに
輸出PATH
MONGODB_HOME = /アプリ/ mongodb3.0
輸出MONGODB_HOME
PATH = $ MONGODB_HOME / binに:$ PATHに
輸出PATH
[ルート@ jsmongodb〜]#エコー$ PATH
/app/mongodb3.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2つの変更グローバルコマンドの環境変数
//複数のパスで構成PATHは、これらのパス上の値の間にコロン間隔を使用して、各パスの追加や削除操作は、Linuxのbashコマンド・インタプリタの外観に影響を与えます。
グローバル変更の環境変数
// PATH変数を変更
[xuliangweiがroot @〜]#のPATH = /ソフト/ binに:$ PATH
//ある書き込みは/ etc / profileの設定ファイル恒久的⽣効果的な
エコーの輸出PATH = /ソフト/の binに:$ PATH ">> / etc / profileを
5.1.8 Bashの特性パス拡大
Linuxのシェルはパスで起動使用すると、カンマで区切られ括弧は、⾥このコンテンツは、リストを形成するために、括弧を展開されます含まれています。
【Redhat7〜@ルート]#RM -rf / TMP / {ZZ、YY}
[ルート@ Redhat7〜]#ます。mkdir / tmpに/ ZZ / A / B / tmpに/ YY / A / B -pv
MKDIR:ディレクトリは "/ tmpに/ ZZ" に作成されています
MKDIR:ディレクトリは "/ tmpに/ ZZ / A" 作成されています
MKDIR:ディレクトリは "/ tmpに/ ZZ / A / B" を作成されています
MKDIR:ディレクトリが作成されました "を/ tmp / YY"
MKDIR:ディレクトリが作成されている "を/ tmp / YY / A"
MKDIR:ディレクトリが作成されました "を/ tmp / YY / A / B"
[ルート@ Redhat7〜]#MKDIR / TMP / {ZZ、Y-Y} / A / B -pv
1.特徴
[ルート@ Redhat7〜]#エコー{1.55}
{1.55}
[ルート@ Redhat7〜]#エコー{1..55}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
。その後には意味しています。
[ルート@ Redhat7〜]#ます。mkdir -pv /iso7.2/syjhct/iso2019{1..12}
MKDIR:ディレクトリを作成する「/iso7.2/syjhct」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso20191」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso20192」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso20193」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso20194」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso20195」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso20196」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso20197」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso20198」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso20199」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso201910」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso201911」を持っています
MKDIR:ディレクトリを作成する「/iso7.2/syjhct/iso201912」を持っています
5.1.9シェルのメタ文字
シェルの外側に加えワイルドカードシェル最初の事前の後には、外部のコマンドラインに処理結果を解析するための責任があるシェルだけでなく、彼らの他の特殊文字のシリーズ。
シェルのメタキャラクタ |
|
文字 |
説明 |
= |
変数名=値、変数に割り当てた値。注スペースを入れずに、変数名と値に追いついについて= |
$ |
変数の置換値は、$変数名は、シェル変数の値に置き換えられます。 |
> |
PROG>ファイルは、ファイルに標準出力をリダイレクトします。 |
>> |
PROG >>ファイルは標準出力ファイルに追加されます。 |
< |
PROG <ファイルのファイルに標準入力ファイルから取得 |
| |
パイプコマンド、例えば:P1 | P2へのP1 P2標準入力、標準出力として |
& |
コマンドをバックグラウンドで実行されている、最大の利点は、コマンドの終了を待たずに、あなたは同じコマンドラインでコマンドを入力し続けることができるということです |
() |
サブシェルコマンドの実行中 |
{} |
現在のシェルで実行する、または別の方法で($上記例えば、{名前}可変使用)可変範囲を定義します。 |
; |
コマンド・ターミネータ。例えば、P1、P2は、P1の最初の実装を表し、P2次に行います |
&& と等価と |
戻り値がtrueの場合、前のコマンドの最後に、次のコマンドに進みます。 |
|| 同等以上 |
戻り値がfalseの場合、前のコマンドの最後に、次のコマンドに進みます。 |
! |
コマンド実行履歴 |
〜 |
ホームディレクトリ |
特殊記号(#)
記号注意(ハッシュマーク[コメント])
!シェバングマークとしてラインシェルファイルの先頭には1、#/ binに/ bashの。
2.他の場所コンテンツ#後ろに、行のコメントとして使用していない限り実行されません。
シングル/二重引用符でしかし3、#何の注釈効果を有していないとして#文字そのもの。
特殊記号(。)
ドット(ドットコマンド[期間])。
次のような等価なソース、組み込み1バッシュ
#!/ binに/ bashの
./mongod
5.1.10シェルのワイルドカード
*任意の長さのマッチング文字を代表して
?代表は任意の1文字にマッチします
[]の文字リストの指定された範囲を示します
かどうか;;前のコマンドが完了した後にコマンドを実行します
戻り値がtrueの場合&&コマンドのフロントエンドは、次のコマンドに進みます。*
戻り値がfalseの場合は||前のコマンドの最後には、次のコマンドに進みます。*
AXB、AYB、AZB:リスト内の任意の単一の文字[リスト]として、[XYZ]、BにBのみ一文字との間、及びのみxまたはyまたはzと一致します。
などAXB、AAB、AB、など[!一覧] aとbとの間のBと一つだけの文字、他の単一の文字のリストと一致する[!0-9]が、数値をすることはできません、
[C1-C2]は、C1-C2に任意の単一文字と一致[0-9]及びB BAは、唯一の文字の間であり、文字は、A0B、A1B、など0-9の間の数であり、... 、A9B。
[ルート@ Redhat7〜]#タッチ/ syjjjj / {XZ、XY、YZ}
[ルート@ Redhat7〜]#lsの/ syjjjj /
X XY XYZ XZ Y YZ Z
[ルート@ Redhat7〜]#lsの/ syjjjj / [XYZ]
/ Syjjjj / X / syjjjj / Y / syjjjj / Z
[ルート@ Redhat7〜]#lsの/ syjjjj / [X、Z]
/ Syjjjj / X / syjjjj / Z
[ルート@ Redhat7〜]#lsの/ syjjjj / [XZ]
/ Syjjjj / X / syjjjj / Y / syjjjj / Z
[ルート@ Redhat7〜]#lsの/iso7.2/Packages/*DB*
/iso7.2/Packages/perl-DBD-MySQL-4.023-5.el7.x86_64.rpm
/iso7.2/Packages/perl-DBD-Pg-2.19.3-4.el7.x86_64.rpm
/iso7.2/Packages/perl-DBD-SQLite-1.39-3.el7.x86_64.rpm
5.1.11バッシュ機能:エスケープ文字
富を提供インタプリタシェルは、文字処理とコマンド置換を達成するために便利なエスケープ文字にしています。
4クラス、頻繁に使用されるエスケープ文字
バックスラッシュ(\):文字列に変数⼀のための画面の後にバックスラッシュ。
単一引用符(「」):ここですべての変数は単純な文字列のようにエスケープ。
二重引用符(「」):ここで変数属性の保持、⾏にエスケープなし。
バッククォート( ``):基本的な必要性、の結果がYESリターンを命じます。使用することは困難で、一般的な使用$(コマンド)
#ディレクトリは$ PWDであるエコー[Redhat7〜@ルート]は、
ディレクトリは/ rootです
バックスラッシュ(\):文字列に変数⼀のための画面の後にバックスラッシュ。
#エコー[Redhat7〜@ルート]ディレクトリは\ $ PWDです
ディレクトリは$ PWDです
[Redhat7〜@ルート]#SYJ = HCT
[ルート@ Redhat7〜]#エコー$ SYJ
HCT
[ルート@ Redhat7〜]#エコー\ $ SYJ
$ SYJ
[ルート@ Redhat7〜]#エコー$ SYJ + $ SYJ
HCT HCT +
#エコー '$ SYJ + $ SYJ' [Redhat7〜@ルート]
$ + $ SYJ SYJ