一、建立一個新shell檔案
1. 建立一個腳本檔案
vi demo.sh
2. 田間腳本頭檔案

3. 授權 和 執行
chmod 777 demo.sh -授權
./demo.sh -執行
二、常見寫法
1、 變量
$1 代表輸入的第一個參數,變量指派時不需要帶$符号,在輸出使用時需要帶
變量兩邊不能加空格
2、if then else fi 使用
注意 if 和 [ 之間要有空格,= 号兩邊也要有空格
if [ "$1" = "" ] ; then
echo ------------------------------------------------------------
exit
else
echo ------------------------------------------------------------
fi
3、常用的一些表達式
檔案表達式
-e filename 如果 filename存在,則為真
-d filename 如果 filename為目錄,則為真
-f filename 如果 filename為正常檔案,則為真
-L filename 如果 filename為符号連結,則為真
-r filename 如果 filename可讀,則為真
-w filename 如果 filename可寫,則為真
-x filename 如果 filename可執行,則為真
-s filename 如果檔案長度不為0,則為真
-h filename 如果檔案是軟連結,則為真
filename1 -nt filename2 如果 filename1比 filename2新,則為真。
filename1 -ot filename2 如果 filename1比 filename2舊,則為真。
整數變量表達式
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
字元串變量表達式
If [ $a = $b ] 如果string1等于string2,則為真
字元串允許使用指派号做等号
if [ $string1 != $string2 ] 如果string1不等于string2,則為真
if [ -n $string ] 如果string 非空(非0),傳回0(true)
if [ -z $string ] 如果string 為空,則為真
if [ $sting ] 如果string 非空,傳回0 (和-n類似)
邏輯非 ! 條件表達式的相反
if [ ! 表達式 ]
if [ ! -d $num ] 如果不存在目錄$num
邏輯與 –a 條件表達式的并列
if [ 表達式1 –a 表達式2 ]
邏輯或 -o 條件表達式的或
if [ 表達式1 –o 表達式2 ]
4、輸入字元串處理
1. ${1:0:10} 字元串截取表達式
大括号中的第一位是變量,1代表輸入的第一個參數值,中間參數代表變量字元串開始位置,最後一個參數代表截取長度。
示例:
執行結果
2. ${1/aaa/bbb} 字元串替換指令
示例:将輸入的内容Patch 替換為liuzheng
echo "測試====${1/Patch/liuzheng}"
5、zip和unzip指令
zip -qr [目标檔案名] [源檔案名]
參數:
- -A 調整可執行的自動解壓縮檔案。
- -b<工作目錄> 指定暫時存放檔案的目錄。
- -c 替每個被壓縮的檔案加上注釋。
- -d 從壓縮檔案内删除指定的檔案。
- -D 壓縮檔案内不建立目錄名稱。
- -f 更新現有的檔案。
- -F 嘗試修複已損壞的壓縮檔案。
- -g 将檔案壓縮後附加在既有的壓縮檔案之後,而非另行建立新的壓縮檔案。
- -h 線上幫助。
- -i<範本樣式> 隻壓縮符合條件的檔案。
- -j 隻儲存檔案名稱及其内容,而不存放任何目錄名稱。
- -J 删除壓縮檔案前面不必要的資料。
- -k 使用MS-DOS相容格式的檔案名稱。
- -l 壓縮檔案時,把LF字元置換成LF+CR字元。
- -ll 壓縮檔案時,把LF+CR字元置換成LF字元。
- -L 顯示版權資訊。
- -m 将檔案壓縮并加入壓縮檔案後,删除原始檔案,即把檔案移到壓縮檔案中。
- -n<字尾字元串> 不壓縮具有特定字尾字元串的檔案。
- -o 以壓縮檔案内擁有最新更改時間的檔案為準,将壓縮檔案的更改時間設成和該檔案相同。
- -q 不顯示指令執行過程。
- -r 遞歸處理,将指定目錄下的所有檔案和子目錄一并處理。
- -S 包含系統和隐藏檔案。
- -t<日期時間> 把壓縮檔案的日期設成指定的日期。
- -T 檢查備份檔案内的每個檔案是否正确無誤。
- -u 與 -f 參數類似,但是除了更新現有的檔案外,也會将壓縮檔案中的其他檔案解壓縮到目錄中。
- -v 顯示指令執行過程或顯示版本資訊。
- -V 儲存VMS作業系統的檔案屬性。
- -w 在檔案名稱裡假如版本編号,本參數僅在VMS作業系統下有效。
- -x<範本樣式> 壓縮時排除符合條件的檔案。
- -X 不儲存額外的檔案屬性。
- -y 直接儲存符号連接配接,而非該連接配接所指向的檔案,本參數僅在UNIX之類的系統下有效。
- -z 替壓縮檔案加上注釋。
- -$ 儲存第一個被壓縮檔案所在磁盤的卷冊名稱。
- -<壓縮效率> 壓縮效率是一個介于1-9的數值。
unzip [-cflptuvz][-agCjLMnoqsVX][-P <密碼>][.zip檔案][檔案][-d <目錄>][-x <檔案>] 或 unzip [-Z]
參數:
- -c 将解壓縮的結果顯示到螢幕上,并對字元做适當的轉換。
- -f 更新現有的檔案。
- -l 顯示壓縮檔案内所包含的檔案。
- -p 與-c參數類似,會将解壓縮的結果顯示到螢幕上,但不會執行任何的轉換。
- -t 檢查壓縮檔案是否正确。
- -u 與-f參數類似,但是除了更新現有的檔案外,也會将壓縮檔案中的其他檔案解壓縮到目錄中。
- -v 執行是時顯示詳細的資訊。
- -z 僅顯示壓縮檔案的備注文字。
- -a 對文本檔案進行必要的字元轉換。
- -b 不要對文本檔案進行字元轉換。
- -C 壓縮檔案中的檔案名稱區分大小寫。
- -j 不處理壓縮檔案中原有的目錄路徑。
- -L 将壓縮檔案中的全部檔案名改為小寫。
- -M 将輸出結果送到more程式處理。
- -n 解壓縮時不要覆寫原有的檔案。
- -o 不必先詢問使用者,unzip執行後覆寫原有檔案。
- -P<密碼> 使用zip的密碼選項。
- -q 執行時不顯示任何資訊。
- -s 将檔案名中的空白字元轉換為底線字元。
- -V 保留VMS的檔案版本資訊。
- -X 解壓縮時同時回存檔案原來的UID/GID。
- [.zip檔案] 指定.zip壓縮檔案。
- [檔案] 指定要處理.zip壓縮檔案中的哪些檔案。
- -d<目錄> 指定檔案解壓縮後所要存儲的目錄。
- -x<檔案> 指定不要處理.zip壓縮檔案中的哪些檔案。
- -Z unzip -Z等于執行zipinfo指令。
6、sed指令編輯檔案内部内容
https://www.runoob.com/linux/linux-comm-sed.html
7、rsync 用法教程
http://www.ruanyifeng.com/blog/2020/08/rsync.html
7、awk 用法教程
https://blog.csdn.net/weixin_41477980/article/details/89511954