shell程式設計1
echo 用來輸出內容,加-e可識別轉義字元
第一個shell指令碼
#!/bin/bash
#The first program
echo -e "Mr.han is shuaige" #輸出引號內的內容
指令碼的執行
#賦予執行許可權,直接執行
chmod 755 hello.sh
./hello.sh
#通過Bash呼叫執行指令碼
bash hello.sh
二、歷史命令和命令補全
選項:-c :清空歷史命令
-w :把快取中的歷史命令寫入歷史命令儲存檔案
~/.bash_history
按Tab鍵補全命令
三、命令別名與常用快捷鍵
alias 別名=‘原命令’
alias vi="vim"
命令的執行順序:
1、第一順位執行用絕對路徑或相對路徑執行的命令;
2、第二順位執行別名;
3、第三順位執行Bash的內部命令;
4、第四順位執行按照$PASH環境變數定義的目錄查詢順序找到的第一個命令。
別名永久生效的辦法:
vi /root/.bashrc : 在檔案裡修改
刪除別名:
unalias 別名 :刪除別名
四、輸出重定向
標準輸出重定向:
命令 > 檔案:
ls > test : 以覆蓋的方式,將ls的結果輸入到test檔案中
命令 >> 檔案:
ls >>test : 以追加的方式。將裡的結果輸入到test檔案中
標準錯誤輸出重定向:
錯誤命令 2> 檔案:
mmdir test 2> 檔案:以覆蓋的方式,將命令的錯誤資訊輸入到檔案中
錯誤命令 2>> 檔案:
mmdir test 2>> 檔案:以追加的方式,將命令的錯誤資訊輸入到檔案中
正確輸出和錯誤輸出同時儲存:
命令 &>> 檔案 :以追加的方式將命令結果輸入到檔案中,無論命令正確還是錯誤。
命令 >> 檔案1 2>> 檔案2:將正確的輸入到檔案1,錯誤的輸入到檔案2
五、多命令順序執行
命令1;命令2 :多個命令順序執行,命令之間沒有任何邏輯練聯絡
命令1&&命令2
命令1||命令2:當“命令1”正確執行,則“命令2”不會執行,反之“命令2”執行
命令1|命令2 :將“命令1”的輸出作為“命令2”的操作物件
六、萬用字元
?:匹配一個任意字元
*:匹配任意字元,包括0個
[]:匹配括號中的任意一個字元
[-]:匹配括號中範圍內的一個字元,例如:[a-z]代表匹配一個小寫字母
[^]:邏輯非,例如[shift+6 0-9]代表匹配一個不是數字的字元
其他特殊符號:
單引號 :單引號裡面的內容都是字元,無特殊含義
雙引號:$ 和 \ 是例外,擁有呼叫變數的值、引用命令和轉義字元的特殊含義
$() :呼叫系統命令
$ : 呼叫變數的值,例如:$name,呼叫name的值
\ :轉移符,跟在\之後的特殊符號將失去特俗含義
七、使用者自定義變數
變數名:字母數字下劃線組成,數字不能開頭
八、環境變數
set :檢視所有變數
export :定義環境變數關鍵字
unset 變數名:刪除變數
env:查詢變數
九、位置引數變數
$n:n為數字,$0代表命令本身,$1-$9代表第一到第九個引數,十以上的引數需要用大括號包含,如${10}
$*:這個變數代表命令列中的所有引數,把所有的引數看成一個整體
$@:這個變數也代表命令列中的所有引數,不過把每個引數區分對待
$#:這個變數代表命令列中的所有引數的個數
十、預定義變數
$?:最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上一個命令執行正確;如果非0,則上一個命令執行不正確
$$:當前程序的程序號(PID)
$!:後臺執行的最後一個程序的程序號(PID)
鍵盤接受據:read【選項】【變數名】
-p"提示資訊":在等待read輸入是,輸出提示資訊
-t 秒數:read命令會一直等待使用者輸入,使用此選項可以指定等待時間
-n 字元數:read命令只接受指定的字元數,就會執行