認識與學習bash

空杯媛發表於2020-06-08

認識與學習bash

認識bash這個shell

  1. 硬體,核心與shell
  • 硬體:整個系統中的實體工作者,包含硬碟,顯示卡,網路卡,cpu等。
  • 核心:真正控制硬碟工作的,有cpu程式,記憶體管理,磁碟輸入輸出等工作。
  • shell:狹義的shell只命令列方面的軟體;廣義的是指只要能夠操作應用程式介面的都叫做shell,本文講的是命令列介面的shell(bash)。
  1. bash shell的功能
  • 命令記憶功能:(history)
  • 命令補全功能 :(tab)鍵
  • 命令別名設定功能:(alias)
  • 作業控制,前臺,後臺控制
  • 程式指令碼:shell script
  1. bash shell的內建命令查詢:type

shell的變數功能

  1. 什麼是變數:以一組文字或符號等,來代替比較複雜或者容易變動的資料。
  2. 變數的顯示:echo 例如:echo $PATH
  3. 變數的設定規則:
  • 變數名只能是英文字母與數字,但不能以數字開頭
  • 變數名與變數內容之間用=號連線,不能直接接空格字元
  • 變數內容若有空格符,可使用單引號或雙引號,注意單引號不解析變數,原樣輸出
  • 可使用轉義字元“\”轉義特殊字元
  • 該變數增加變數內容時,例如:PATH="$PATH":/home/zj
  • 若該變數需要在其它子程式執行,則需要以export來使變數變成環境變數,例如:export PATH
  • 取消變數:unset 變數名
  1. 環境變數的功能
  • 檢視環境變數:env
  • 自定義變數轉成環境變數:export
  • 子程式僅會繼承父程式的環境變數,不會繼承父程式的自定義變數
  1. 變數鍵盤讀取,陣列與宣告:read,array,decla
  2. 變數內容的刪除,替代與替換:

從前面開始刪除:

  • #:刪除最短的 例如:echo ${path#/:} 把path中/到:最短的刪除,號為萬用字元
  • ##:刪除最長的 例如:echo ${path##/:} 把path中/到:最長的刪除,號為萬用字元,即前面的目錄都刪除了,僅保留最後一個目錄。

從後面開始刪除:

  • %:刪除最短的 例如:echo ${path%/:} 把path中/到:最短的刪除,號為萬用字元
  • %%:刪除最長的 例如:echo ${path%%/:} 把path中/到:最長的刪除,號為萬用字元

變數的替換:

例如:把path變數中的sbin替換為大寫的SBIN
echo ${path/sbin/SBIN} 只替換第一個
echo ${path//sbin/SBIN} 替換所有

  1. 命令別名與歷史命令:alias , unalias,history

bash shell的操作環境

  1. 路徑與命令的查詢順序
  • 以相對絕對路徑執行命令
  • 由alias找到命令來執行
  • 由bash的內建命令來執行
  • 通過$PATH這個變數的順序找到的第一個命令來執行
  1. bash的環境配置檔案
  • loginshell 取得bash時需要完整的登入流程,需要使用者輸入登入賬號與密碼:系統整體設定檔案/etc/profile與~/.bash_profile
  • non-login shell 取得bash的介面方法不需要重複登入,以圖形介面啟動終端機,並不需要再次輸入賬號與密碼:~/.bashrc

資料流重定向

  1. 標準輸入(stdin):程式碼為0,使用<或<<
  2. 標準輸出(stdout):程式碼為1,使用>或>>
  3. 標準錯誤輸出(stderr):程式碼為2 ,使用2>或2>>
  4. 命令執行的判斷依據:;,&&,,||

管道命令

  1. 選取命令:cut,grep
  2. 排序命令:sort,wc,uniq
  3. 雙向重定向:tee
  4. 字元轉換命令:tr,col,join,paste,expand
  5. 引數代換:xargs
  6. 關於減號-的用途:某些命令需要用到檔名來進行處理時,該stdin與stdout可以利用減號來代替
tar -cvf - /home | tar -xvf -
將home裡面的檔案打包經管道傳送給後面的tar -xvf -

相關文章