1. 程式人生 > 實用技巧 >Bash指令語法和解析方式

Bash指令語法和解析方式

一、命名語法

一條Bash指令的的命名一般包含三個部分:command(指令);option(選項);argument(引數)。

命名的格式為:commandoptionargument。

ls -l -F file1 file2 file3

  -l:以單行格式輸出檔案詳細資訊

  -F:在每個輸出項後面追加檔案的型別識別符號,具體含義包括:

“*”表示具有可執行許可權的普通檔案;

“/”表示目錄。“@”表示符號連結;

“|”表示命令管道FIFO;

“=”表示sockets套接字;

當檔案為普通檔案時,不輸出任何的字元。

選項

對於選項(option)型別有兩種:

1)短選項(short option):由一個連字元和一個字母構成,例如:-a, -s等;
2)長選項(long options):由兩個連字元和一些大小寫字母組合的單詞構成,例如:--size,--help等

  通常,一個程式會提供short option和long options兩種形式,例如:ls -a,--all。另外,短選項(short option)是可以合併的,例如:-sh表示-s和-h的組合,如果要表示為一個選項需要用長選項--sh。

不是所有的Linux命令都遵循以上的規則,例如:

find -type d -mindepth 2

引數

1、可以是零個或者多個:有預設值;不需要引數。

2、可以是一個或者多個。

二、語法的描述規則

1、方括號中的項是可選的;

2、不在方括號中或者是在大括號中的項是必選的;

3、黑體字必須按原樣準確鍵入;

4、斜體字必須使用適當的值代替;

5、後面接省略號的引數可以多次重複。

如:

ls [ABCDEFGHLOIU@abcdefghlkj][file...]

6、如果一個單獨的選項和一個引數組合在一起,那麼該選項和引數必須同時使用,如:

find [-H][-L][-P][-D][-D debugopts][-O level][path...][expression]

7、由|(豎線)字元分開的兩個或者多個項,表示可以從這個列表中選擇一個項,如:

who [OPTION]...[FILE|ARG1 ARG2]

  

三、一次輸入多條命令

1、以”;“隔開時,如:

date;cal
cal;date   
注:當前者執行失敗時,後者就不會執行

  

2、以“||”隔開時,如:

date||cal
cal||date
注:當前者執行失敗時,後者才會執行

  

四、強引用和弱引用

1、弱引用 ""

echo "lucky number is ${RANDOM}"
輸出的結果為:
lucky number is 12324(隨機數)

  

2、強引用 ' '

echo 'lucky number is ${RANDOM}'
輸出的結果為:
lucky number is ${RANDOM}

為了弄清楚引起這兩種引用的差異的原因。我們需要去了解命令列解析的相關知識。

命令列解析

命令列的解析過程:

1、根據${IFS}(InternalFiledSeparator)將其拆分為多個欄位word;

2、對其中的(metacharacter)元字元進行處理;

3、對命令進行重組並執行。

補充:元字元包括

=:設定變數    &&:若上一個命令返回TRUE,繼續執行
$:引用變數    ||:若上一個命令返回FALSE,繼續執行
|:管道            ...:省略
{,}:界定變數範圍

  

強引用' '內的所有meta元字元被關閉;

弱引用" "內的大部分meta元字元被關閉,部分被保留,如$,{,}等。

關於強引用和弱引用的小練習:

$ A="B C"
$ echo "$A"    輸出B C
$ echo '$A'     輸出$A
$ echo " '$A' "   輸出'B C'
$ echo ' "$A" '   輸出"$A"
$ echo ' '$A' '    輸出B C