1、> file
前面沒有命令,shell會建立一個空檔案(長度為0個字元),如果檔案以前已經存在,其內容就會丟失。
2、一行中可以鍵入多條命令,命令之間用分好分隔。
3、如果在鍵入的命令之後跟一個&符號,該命令就發送到後台執行,也就是說,該命令不再佔住終端,可以繼續處理其他工作。
4、$字元是shell的特殊字元,如果$後跟一個合法的變數名,shell會把它當作在此處用變數所儲存的值來替換的指令。運算式可以寫為$((expression))。
5、shell變數$#,裡面存的是命令列中所鍵入的參數個數。
6、$*可以引用傳遞給程式的所有的參數,在參數不確定或者參數數目可變的程式中,通常是很有用的。
"$@" 它會被替換成“$n”,這裡$@前後的雙引號是必不可少的,如果沒有,變數$@和$*完全一樣。
7、如果要給一個程式傳遞9個以上的參數,不能用$10、$11的方法來取第10個以及以後的參數,要用${n}這種格式。
8、shell自動將最後所執行命令的退出狀態設定到shell變數$?中。
$cp phonebook phone2
$echo $?
$0
0操作成功 非0操作失敗
9、內部命令test,它用來在if命令中測試一種或幾種條件,格式為 test expression。
-n string 檢測string不為空白為真
-n string 檢測string為空白為真
test命令的另外一種模式[expression]
-eq 等於
-ge 大於等於
-gt 大於
-le 小於等於
-lt 小於
-ne 不等於
檔案判斷
-d 為目錄
-e 存在
-f 普通檔案
-r 可讀檔案
-s 長度不為0
-w 可寫檔案
-x 可執行檔
-L 連結檔案
邏輯判斷
! 邏輯非
-a 邏輯與
-o 邏輯或
10、小括弧格式 ( )
11、else結構
if command1
then
command
else
command
fi
12、內部命令exit 它可以立即終止shell程式的執行。exit n n為希望返回的退出狀態,不指定為最後一條命令的退出狀態。
13、elif結構
if command1
then
command
elif command2
then
command
else
command
fi
14、case結構
case value in
pat1) command
command
...
command;;
pat2) command
command
...
command;;
...
patn) command
command
...
command;;
esac
case語句中的特殊字元指定匹配模式:
?表示任一個字元
*表示0或若干個任一字元一個
15、-x 偵錯工具選項
sh -x 程式名 程式參數
16、空命令 :
其目的是什麼也不做,多用於條件陳述式
17、&&和||結構
&& 如果在任何需要shell命令的位置寫了 command1 && command2 則先執行command1,如果返回的退出狀態為0則執行command2;如果command1返回的退出狀態不為0,則跳過command2。
|| 結構功能也差不多,區別在於只有當第一條命令的退出狀態不為0時才執行第二條命令。
在這種結構的左右兩邊都可以用管道線。如果用在左邊,檢測的是管道線中最後一條命令的退出狀態。
18、for命令
for var in word1 word2 ... wordn/filenames[1-n]/$*
do
command
command
...
done
19、while命令
while command1
do
command
command
...
done
while 經常與shift命令共同使用。shift命令使位置變數向下移(即$n到$n-1),並且$#遞減。
20、until命令
until command1
do
command
command
...
done
與while模式相反
21、sleep n 程式掛起n秒
22、break n、continue n從迴圈中退出
23、PATH
PATH是執行命令時shell要搜尋的目錄,這些目錄彼此之間用冒號{:}分隔
24、exec 命令
exec program 以新shell代替當前程式