認識與學習BASHTable of Contents
- 1 認識Bash
- 2 Shell的變數功能
- 3 命令別名與曆史命令
- 4 Bash shell的作業環境
- 5 資料流重導向
- 6 管線命令
1 認識Bash
- 通過Shell將輸入的指令與Kernel溝通,讓Kernel控制硬體工作
- 查看Shell:cat /etc/shell
- 登入後預設的shell類型記錄在/etc/passwd中,與賬戶相關
- 命令別名:alias lm='ls -al' #注意有無空格
- 協助:man bash
- 命令類型:type
- type ls # ls is aliased to `ls –color=auto'
- type cat # cat is hashed (/bin/cat)
- type cd # cd is a shell builtin
- 命令執行:
- \[Enter]:將[Enter]轉義,按下後不執行,而是另起一行
2 Shell的變數功能
- 概念:同一變數,不同使用者可以有不同值,所以可以用變數來代表此值,而不用將具體的值 寫入程式,如$PATH
- 顯示變數:echo $PATH
- 設定變數:PATH=xxx #注意空格有無
- 擴充變數:PATH=$PATH:xxx
- 取消變數:unset MAIL
- 查看環境變數:env
- 查看環境變數及自訂變數:set
- 自訂變數轉環境變數:export
- 為什麼要轉成環境變數:因為子程式會繼承父程式的環境變數
- 語系支援
- 查看系統支援的語系:locale -a
- 查看與語系有關的變數:locale
- 鍵盤讀取使用者輸入read: read atest #將使用者輸入讀入atest變數
- 聲明變數類型 declare: declare -i sum=100+50
3 命令別名與曆史命令
- 別名
- alias lm='ls -al | more'
- unalias lm
- 曆史命令
4 Bash shell的作業環境
- 指令執行時尋找順序
- 相對/絕對路徑 -> alias -> bash內建 -> $PATH
- bash設定檔
- login shell/non-login shell
- login shell: 進入shell時需要輸入帳號密碼
- non-login shell: 通過圖形介面登入,再啟動shell時無需輸入帳號密碼
- 設定檔
- login shell:
- /etc/profile :系統整體設定
- 以下三個檔案按順序,如果存在,就讀取,後面的就不再讀取
- ~/.bash_profile
- ~/.bash_login
- ~/.profile
- 萬用字元
- * : 0到無窮個字元
- ? : 一個字元
- []: [abc] # a or b or c
- [-]: [0-9] # 0 到 9
- [^]: [^abc] # 不是a,b,c的一個字元
5 資料流重導向
- > :覆蓋
- >>:累加
- /dev/null:接收資訊但不顯示
- 依次執行:cmd1,cmd2,cmd3
- 根據上一條執行結果確定下一條
- cmd1 && cmd2
- cmd1 || cmd2
6 管線命令
- ls | less
- cut:同一行資料分割
- echo $PATH | cut -d ':' -f 5 #以':'分割,第5個資料
- grep:如果一行裡有需要的資訊,就返回這一行
- sort:排序
- uniq:重複內容只顯示一次
- wc:統計單詞數
- tee:雙向重新導向
- tr:刪除或替換資料
- col:轉化為純文字
- join:將兩個檔案中相關資訊放在一起
- paste:將兩行並在一起,中間用[Tab]分開
- expand:將[Tab]轉為空白格
- split:將大檔案傳為小檔案