天天看點

腳本學習心得

一、建立一個新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

繼續閱讀