Linux Shell指令碼系列之一

tiu5發表於2017-09-30
  • Shell概述
    shell的作用
    shell的作用
    • 接收輸入的命令,是一個命令列直譯器,把接收到的命令轉為二進位制傳給核心,由核心呼叫硬體處理
    • 解釋執行的指令碼語言,可以直接呼叫Linux系統命令,可以編寫一些程式,方便運維人員使用
  • Shell的分類
    • Bourne Shell (sh,ksh,Bash,psh,zsh) Bash是Linux標準Shell
    • C Shell (csh,tcsh) 語法與C語言類似
    • 檢視當前系統使用的Shell可以使用命令列:echo $SHELL

  • echo 輸出命令
    echo [選項] [內容]
    -e:支援反斜線控制的字元轉換
    設定輸出字型的顏色 31m=紅色,32m=綠色,34m=藍色,0m=重置
    echo -e "\e[1;31m 我是紅色的字型 \e[0m"
    設定背景顏色 41m=紅色,42m=綠色,43m=黃色,0m=重置
    echo -e "\e[1;42m 我的背景顏色是綠色 \e[0m"
  • 寫一個指令碼
    vi hello.sh:用vim編輯器寫一個hello.sh檔案
    #!/bin/bash : 位於首行,宣告我這個檔案是Linux的標準指令碼,即宣告使用Bash的命令直譯器(不可省略)
    #這是第一個shell指令碼:#代表註釋
    echo -e "\e[1;31m 我是紅色的字型 \e[0m"
    :wq退出vim編輯器並儲存
    chmod 755 hello.sh:修改檔案許可權
    ./hello.sh:執行當前目錄下的hello.sh指令碼

  • 命令的別名
    alias:檢視系統中所有的命令別名
    alias cp='cp -i':此時執行cp時相當於cp -i(臨時生效,登出後則失效,永久生效需修改環境變數配置檔案)
    unalias:刪除別名
  • 命令生效順序 (先後依次排序如下)
    • 絕對路徑或相對路徑執行的命令
    • 執行別名
    • 執行Bash內部命令
    • 執行$PATH環境變數下定義的目錄裡的命令

  • 常用快捷鍵
    • ctrl+c:強制終止當前命令
    • ctrl+z:把當前執行命令放入後臺
    • ctrl+a:游標移動到當前命令列的行首
    • ctrl+e:游標移動到當前命令列的行尾
    • ctrl+u:從當前游標位置刪除命令列到行首
    • ctrl+r:在歷史命令中搜尋
    • ctrl+l:清屏相當於clear

  • history [選項] [歷史命令儲存檔案]
    -c:清空歷史命令
    -w:把快取中的歷史命令寫入到歷史命令儲存檔案中 預設為~/.bash_history
  • 歷史命令的呼叫
    • 按上下箭頭
    • !!:執行上一條命令
    • !字串:執行匹配最後一條以該字串開頭的命令
  • 使用Tab鍵 進行命令和檔案目錄的補全,若當前匹配的有多個則再摁多一次,則會列出所有匹配的檔案或目錄

  • 輸出重定向:把原來應該輸出到顯示器的內容,輸出到其他地方,一般輸入到檔案
    • 檔案描述符
      0:標準輸入
      1:標準輸出
      2:標準錯誤輸出
    • 標準輸出重定向 只能儲存正確命令的執行的結果
      命令 > 檔案:覆蓋的方式輸出到檔案
      命令 >> 檔案:追加的方式輸出到檔案
    • 標準錯誤輸出重定向 只能儲存錯誤命令的執行的結果
      錯誤命令 2> 檔案:覆蓋的方式輸出到檔案
      錯誤命令 2>> 檔案:追加的方式輸出到檔案
      注意2>之間沒有空格,否則會報錯
    • 正確輸出和錯誤輸出同時儲存
      命令 > 檔案 2>&1
      命令 >> 檔案 2>&1
      命令 &> 檔案
      命令 &>> 檔案
      命令 >> 檔案1 2>> 檔案2
    • &>/dev/null:系統黑洞可以當成垃圾站,就是執行命令不想看到結果
  • 輸入重定向:wc [選項] [檔名]
    選項
    -c:統計位元組數
    -w:統計單詞數
    -l:統計行數

    • 例子:
      執行wc命令
      輸入:
      asdf asdfg
      再按ctrl+d結束
      舉個例子1
      舉個例子1
    • wc < 檔案wc 檔案:則是統計檔案
    • wc << 字串:當輸入相同字串時結束輸入,進行統計
      舉個例子2
      舉個例子2
  • 管道符
    命令1 | 命令2 : 命令1的正確輸出作為命令2的操作物件

    舉個例子3
    舉個例子3

  • 萬用字元
    ?:匹配一個任意字元
    *:匹配任何內容,0個或多個任意字元
    []:匹配中括號中的任意一個字元,[ab] 則匹配到的是a或b
    [ - ]:-代表的是一個範圍,[0-9]表示的就是匹配一個數字
    [ ^ ]:匹配除了[]範圍中的一個字元,[^a-z]表示匹配一個不是小寫字母的字元

    舉個例子4
    舉個例子4

  • 其他特殊符號
    ''在單引號中,會認為是字串
    ""在雙引號中,'$'被認為是呼叫變數,'`'被認為是引用命令,'\'被認為是轉義符
    $()應用系統命令
    舉個例子5
    舉個例子5

相關文章