linux shell命令行パラメータの使い方を詳しく説明します。
linuxコマンドラインを使用して、linuxシステムを管理することに慣れています。例えば、
$ date
11 23 01:34:58 CST 1999
$
ユーザがログインすると、実際にshellに入ります。コマンドラインに入力する最初の文字はコマンドの名前でなければなりません。2番目の文字はコマンドのオプションまたはパラメータです。コマンドラインの各単語はスペースまたはTABで区切られていなければなりません。フォーマットは以下の通りです。 $ Command Option Arguments
一、オプションとパラメータ オプションは、オプションとパラメータを区別するために必要なマイナス記号(マイナス記号が必要です。Linuxはオプションとパラメータを区別します。)があります。オプションは、コマンドの実行する動作の種類を変更するために使用できます。たとえば: $ ls
motd passwd
これはオプションなしのlsコマンドであり、現在のディレクトリにあるすべてのファイルを一覧表示し、他の詳細な情報を表示せずに各ファイルの名前だけを一覧表示することができます。 $ ls -l
total 2
-rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd
-rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd
は-lオプションを追加して、データサイズとデータが最後に変更された時間など、各ファイルの行情報をリストします。 ほとんどのコマンドはパラメータを受け入れるように設計されています。パラメータは、コマンドラインのオプションの後に入力される単語の一つまたは複数です。例えば、 $ ls -l text
-rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd
-rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd
$
は、textディレクトリの下にあるすべてのファイルとその情報を表示します。 いくつかのコマンドは、lsなどのパラメータを持つことができますが、いくつかのコマンドは、最小数のパラメータを必要とすることがあります。例えば、cpコマンドは少なくとも2つのパラメータが必要であり、パラメータの数がコマンド要求に一致しない場合、shellはエラー情報を与える。たとえば: $ cp -i mydata newdata
注意:コマンドラインのオプションはパラメータ入力より先です。 二、コマンドラインの特徴 コマンドラインは実際に編集可能なテキストバッファです。車を押す前に入力したテキストを編集できます。例えば、BACKSPACEキーを利用して、入力したばかりの文字を削除して、行全体の削除を行うことができます。また、文字を挿入することもできます。特に、複雑なコマンドを入力する時、入力エラーが発生したら、コマンド全体を新たに入力する必要がなく、編集操作を利用すれば、エラーを修正することができます。 上矢印を利用して、実行したばかりのコマンドを再表示することができます。この機能を利用して、前に実行したコマンドを繰り返し実行することができます。このコマンドを新たに入力する必要はありません。 bashは以前に入力したコマンドのリストを保存しています。このリストはコマンド履歴表と呼ばれています。矢印を押すと、各コマンドがコマンドラインに順次表示されます。同様に、矢印を押してコマンドリストを下に移動することができます。これにより、以前の各コマンドをコマンドラインに表示し、ユーザがこれらのコマンドを変更して実行することができます。この特徴は10.4節で詳細に論じられる。 一つのコマンドラインには複数のコマンドを入れて、各コマンドをセミコロンで区切ることもできます。たとえば: $ ls -F;cp -i mydata newdata
は、いくつかのコマンドラインに一つのコマンドを入力し、一つのコマンドラインを逆斜め棒で次のラインに続けることもできる。 $ cp -i /
mydata /
newdata
上のcpコマンドは3行に入力され、開始された2行は逆傾斜で終了し、3行を一つのコマンドラインとします。 shellの特殊文字 shellには普通の文字を使用するほか、特殊な意味と機能を持つ特殊な文字も使用できます。それらを使う時は、その特殊な意味と作用範囲に注意します。これらの特殊文字をそれぞれ紹介します。ワイルドカード ワイルドカードは、ファイル名のマッチング、パス名の検索、文字列の検索などのモードマッチングに使用されます。よく使うワイルドカードは*、?を選択します。ユーザは、コマンドパラメータとしてのファイル名にこれらのワイルドカードを含めることができ、いわゆる「モードストリング」を構成し、実行中にモードマッチングを行うことができる。斜線(/)は明示的に一致しなければならない。例えば「*」はマッチングできません。fileは「.*」にマッチします。 ? 任意の1文字を表します。 [ ] 指定された文字範囲を表します。ファイル名の[]位置の文字が[]で指定された範囲内にある限り、このファイル名はこのパターンの列に一致します。四角い括弧の中の文字範囲は、直接与えられた文字から構成されてもよいし、範囲を限定する先頭文字、終端文字、および中間のハイフン(-)から構成されてもよい。例えば、f[a-d]はf[abcd]と同じ役割をしている。Shellは、コマンドラインで指定されたパターン列に一致するすべてのファイル名をコマンドのパラメータとして、最終コマンドを形成してから、このコマンドを実行します。 これらのワイルドカードの具体的な意味。四、モードの意味
* 。
*Text* Text 。
[ab-dm]* a、b、c、d、m 。
[ab-dm]? a、b、c、d、m 。
/usr/bin/?? /usr/bin 。
では、ハイフン「-」は、四角い括弧の外では普通の文字になります。と**は四角い括弧の外だけがワイルドカードです。四角い括弧の中に現れたら、ワイルドカードの能力を失い、普通の文字になります。例えば、モード「-a[*?」abc”の中で相手の括弧だけがワイルドカードです。普通の文字ですので、マッチする文字列は-a*abcと-a?abcだけです。 最後にワイルドカードを使う時の注意点を説明します。からですと[]はshellにとって特別な意味を持っていますので、通常のファイル名にはこれらの文字が現れてはいけません。特にディレクトリ名にはそれらが現れないようにしてください。そうしないとShellがマッチして無限の再帰が可能です。また、指定されたパターン列に一致するファイル名がディレクトリにない場合、Shellはこのパターン列自体をパラメータとして使用して関連コマンドに渡すことに注意してください。これはコマンドに特殊な文字が現れる原因かもしれません。 ペンダント shellには引用符が3つあります。シングルクォーテーション、ダブルクォーテーション、バッククォーテーションです。 六、シングルクォーテーション シングルクォーテーションマークで囲まれた文字は普通の文字として現れます。特殊文字は単引用符で囲まれても本来の意味を失い、普通の文字としてのみ解釈されます。たとえば: $ string='$PATH'
$ echo $string
$PATH
は、普通の文字として表示されます。 七重引用符 二重引用符で囲まれた文字は、$、/、'、および'のほかに特殊な文字であり、その特殊な機能を保持しているほか、残りの文字はまだ普通の文字として扱われています。ドルにとっては、この変数と$にとっては、変換記号であり、shellはその後ろの文字を特殊処理しないで、普通の文字として使えばいいということを教えています。二重引用符の中で前に/を付ける必要があるのは四文字だけです。「はい」の番号は前にプラスしていないとShellは前の「号」と一致します。 例えば、PATHの値が.:/usr/bin:/binであると仮定して、コマンドを入力します。
$ TestString=”$PATH///”/$PATH”
$ echo $TestString
.:/usr/bin:/ bin/”$PATH
皆さん、二番目の二重引用符をつける前に、どのような結果が出るか試してみてもいいです。 八、反引用符` バックボーン(`)という文字に対応するキーは、一般的にキーボードの左上にあります。シングルクォーテーションマーク(')と混同しないでください。逆引用符で囲まれた文字列は、shellによってコマンドラインと解釈され、実行時にshellはまずこのコマンドラインを実行し、その標準出力結果を引用符全体(2つの逆引用符を含む)の部分の代わりにします。たとえば:
$ pwd
/home/xyz
$ string=”current directory is `pwd`”
$ echo $string
current directour is /home/xyz
shellがechoコマンドを実行する場合、まず`pwd`のコマンドpwdを実行し、出力結果/home/xyzを`pwd`の部分に取って代わり、最後に置換した結果全体を出力します。 引用符のこのような機能を利用してコマンドの置換ができます。つまり、引用符を含めた実行結果を指定変数に割り当てます。たとえば:
$ today=`date`
$ echo Today is $today
Today is Mon Apr 15 16:20:13 CST 1999
逆引用符は、入れ子としても使用できます。ただし、入れ子を使う時は、内側のバックボーンはバックスラッシュ(/)で意味を変えなければなりません。たとえば:
$ abc=`echo The number of users is /`who| wc-l/``
$ echo $abc
The number of users is 5
は、逆引用符間のコマンドラインにおいても、shellの特殊文字を使用することができる。Shellは`中命令の結果を得るために、`中指定の命令を実際に実行します。実行時、コマンド中の特殊文字は$などです。等はまた特殊な意味を持ち、`に含まれるものは、例えば、任意の合法的なShellコマンドであってもよい。
$ ls
note readme.txt Notice Unix.dir
$ TestString=”`echo $HOME ` ` ls [nN]*`”
$ echo $TestString
/home/yxz note Notice