天天看點

bash shell

bash的主要優點如下:

  1. 可以通過

    history

    檢視指令的曆史記錄
  2. 指令和檔案路徑補全的好幫手-->TAB
  3. 指令别名

    alias

  4. 工作控制、前景背景控制: (job control, foreground, background)
  5. 自動化腳本shell scripts
  6. 通配符

    * 比對 0 或多個字元

    ? 比對任意一個字元

    [list] 比對 list 中的任意單一字元

    [!list] 比對 除list 中的任意單一字元以外的字元

    [c1-c2] 比對 c1-c2 中的任意單一字元 如:[0-9] [a-z]

    {string1,string2,...} 比對 sring1 或 string2 (或更多)其一字元串

    {c2..c2} 比對 c1-c2 中全部字元 如{1..10}

注:使用

type COMMAND

可以判斷指令是不是Bash shell 内置指令

Bash shell 指令快速編輯

按鍵 作用

Ctrl+d 鍵盤輸入結束或退出終端

Ctrl+s 暫定目前程式,暫停後按下任意鍵恢複運作

Ctrl+z 将目前程式放到背景運作,恢複到前台為指令fg

Ctrl+a 将光标移至輸入行頭,相當于Home鍵

Ctrl+e 将光标移至輸入行末,相當于End鍵

Ctrl+k 删除從光标所在位置到行末

Alt+Backspace 向前删除一個單詞

Shift+PgUp 将終端顯示向上滾動

Shift+PgDn 将終端顯示向下滾動

Bash shell中的變量

  • 擷取變量:

    echo $variable

echo $HOME
echo $PATH 或echo ${PATH} 
           
  • 設定變量

    Var=value

  • 删除變量

    unset Var

  • 如果需要該變量在其他子程式中執行,則需要以

    export

    時該變量變為環境變量

    export PATH

注:

  • 雙引号仍然可以保有變量的内容,但單引号内僅能是一般字元 ,而不會有特殊符号
  • 在一串指令中,在 ` 之内的指令将會被先執行,而其執行出來的結果将​​做為外部的輸入資訊!

環境變量

用 env 觀察環境變數與常見環境變量說明:

  • HOME

    代表使用者的家目錄。還記得我們可以使用 cd ~ 去到自己的家目錄嗎?或者利用 cd 就可以直接回到使用者家目錄了。那就是取用這個變數啦~ 有很多程式都可能會取用到這個變數的值!

  • SHELL

    告知我們,目前這個環境使用的 SHELL 是哪支程式? Linux 預設使用 /bin/bash 的啦!

  • HISTSIZE

    這個與『曆史指令』有關,亦即是, 我們曾經下達過的指令可以被系統記錄下來,而記錄的『筆數』則是由這個值來設定的。

  • MAIL

    當我們使用 mail 這個指令在收信時,系統會去讀取的郵件信箱檔案 (mailbox)。

  • PATH

    就是執行檔搜尋的路徑啦~目錄與目錄中間以冒号(:)分隔, 由于檔案的搜尋是依序由 PATH 的變數内的目錄來查詢,是以,目錄的順序也是重要的喔。

  • LANG

    這個重要!就是語系資料啰~很多訊息都會用到他, 舉例來說,當我們在啟動某些perl 的程式語言檔案時,他會主動的去分析語系資料檔案, 如果發現有他無法解析的編碼語系,可能會産生錯誤喔!一般來說,我們中文編碼通常是 zh_TW.Big5 或者是 zh_TW.UTF-8,這兩個編碼偏偏不容易被解譯出來,是以,有的時候,可能需要修訂一下語系資料。這部分我們會在下個小節做介紹的!

  • RANDOM

    這個玩意兒就是『随機亂數』的變數啦!目前大多數的 distributions 都會有亂數産生器,那就是 /dev/random 這個檔案。我們可以透過這個亂數檔案相關的變數 ($RANDOM) 來随機取得亂數值喔。在 BASH 的環境下,這個 RANDOM 變數的内容,介于 0~32767 之間,是以,你隻要 echo $RANDOM 時,系統就會主動的随機取出一個介于 0~32767 的數值。萬一我想要使用 0~9 之間的數值呢?呵呵~利用 declare 宣告數值類型, 然後這樣做就可以

set

可以檢視所有的變量

自定義變量和環境變量最大的差別在于是否會被子程式所繼續引用,因為子程式僅會繼承父程式的環境變量, 而不會繼承父程式的自定義變量

自定義變量-->環境變量 export Var

環境變量 --> 自定義變量 declare

繼續閱讀