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