1. 程式人生 > >SHELL訓練營--day2

SHELL訓練營--day2

管道

  • 上節說到命令的輸出,利用輸入輸出重定向將命令處理物件變成檔案。同樣,命令輸出也可通過linux引入的管道符,將輸出轉向 變為 另一個命令的輸入物件

    如:cat 1.txt|wc -l 統計檔案行數。
    如:cat /etc/passwd | cut -d ":" -f 1 輸出系統使用者。


命令任務管理

  • 多個命令同時執行(多工管理)
  • 命令後臺執行
  • 多命令執行管理(後臺任務管理)

    預設情況下,當前命令輸出物件 是 檔案 描述符 0,即當前輸出裝置--螢幕。當前命令獨自佔用
    該裝置。
    當需要同時再執行另命令時,就需要釋放 該命令 對 輸出裝置的佔用,並將命令放入後臺執行。
    同樣,需要在前臺對 後臺使用者命令執行進行管理,如後臺執行或後臺停止狀態。

    #當前命令執行時,可通過快捷鍵放入後臺(CTRL+Z),或是退出該命令(CTRL+C)。
    #注意的是,通過快捷鍵將命令放入後臺,預設是在後臺停止狀態。
    #以ping命令為例,下面演示放入後臺(CTRL+Z),後臺命令檢視,後臺執行,
    [[email protected] ~]# ping www.baidu.com
    PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
    64 bytes from 14.215.177.39: icmp_seq=1 ttl=54 time=3.65 ms
    ^Z
    [1]+  Stopped                 ping www.baidu.com
    #+號表示預設最近的一個後臺命令。
    #檢視後臺命令:jobs
    [
    [email protected]
    ~]#jobs [1]+ Stopped ping www.baidu.com [2]- Stopped ping www.qq.com #後臺命令調入前臺 [[email protected] ~]#bg 2 #命令在後臺執行 [[email protected] ~]#fg 2 #刪除後臺命令 [[email protected] ~]#kill %2 #命令直接放入後臺執行 [[email protected] ~]# ping www.qq.com &

shell變數

之前章節從shell命令說起,談到命令歷史記錄檢視,命令簡寫,命令處理物件的匹配,命令補全提醒,命令輸入輸出物件,多條命令的呼叫。
這裡,再從命令執行環境說起。
命令在計算機中不是單獨獨立的存在,它必然需要與作業系統或其它命令進行互動。
它會接受作業系統初始化提供引數,系統變數,或是其它使用者自定義引數。
變數的來源可分為,環境變數,預定義變數,命令位置變數,使用者自定義變數等。
預設可通過env或set 檢視當前環境變數。其中env不包含使用者自 定義變數。
常使用環境變數:HOSTNAME,UID,USER,LOGNAME,HOME,PATH,PPID,等。
預定義環境變數:LANG,PS1,等。主要使用者儲存初始化使用者設定等。
命令位置變數:$0,$n,$#,$*,[email protected],$?,$$,$! 等。
使用者自定義變數,設定使用者環境變數。

  • 自定義環境變數說明:

    • 變數名規則:字母數字下劃線,首字元不能是數字。
    • 變數值定義:

      變數值引用分為三類:
      一類用單引號引用,表示純字元,不管字元中是否含有特殊符號。
      一類用雙引號引用,表示特殊符號會轉義。
      一類用反引號引用,表示引用的是命令,變數值是命令返回的資訊。

    • 變數使用範圍

      預設變數是局域變數,只能在當前環境中使用。
      可通過宣告變數為全域性變數(export a=2),將變數在環境中向下傳遞。

  • 自定義變數取消 unset
  • 只讀變數 readonly NAME

變數儲存位置

變數建立隨著系統啟動一點點新增,按linux啟動過程和使用者登入過程,新增變數的檔案順序大致如下:
/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
/etc/profile 在載入檔案系統前需要處理檔案。檔案執行時,會從/etc/profile.d目錄的配置檔案中搜集shell的一些設定。
~/.bash_profile: 每個使用者家目錄下都有該檔案 ,使用此檔案輸入使用者自己的shell資訊。當用戶登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,並呼叫執行使用者的~/.bashrc檔案。
~/.bashrc: 該檔案包含使用者自己的bash shell的資訊,當登入時以及每次開啟新的shell時,該檔案被讀取。使用者定義自己的環境變數,建議寫入此檔案。
~/.bash_logout:當每次退出系統(退出bash shell)時,執行該檔案.