1. 重定向符號及含義
注意:箭頭流向即是數據的流向.
| 數字0:標准輸入(standard input,簡寫stdin),數據從右往左方向流動 | |
| 數字1:標准正確輸出(standard output,簡寫stdout),數據從左往右流動 | |
| 數字2:標准錯誤輸出(standard error output,簡寫stderr),數據從左往右流動 | |
| > 或 1> | 把正確的進行輸出(標准輸出),覆蓋 |
| >> 或 1>> | 把正確的進行輸出(標准輸出),追加 |
| 2> | 把錯誤的進行輸出,覆蓋 |
| 2>> | 把錯誤的進行輸出,追加 |
| < 或 0< | 一般通過文件來輸入重定向,如tr命令使用較多(0一般省略不寫) |
| << 或 0<< | 追加輸入重定向,一般cat命令用的多,在shell腳本中(0一般省略不寫) |
| &> | 合並正確和錯誤輸出,覆蓋重定向 |
| &>> | 合並正確和錯誤輸出,追加重定向 |
| COMMAND > /path 2> /path2 | 正確或錯誤(標准輸出和標准輸入)輸出至不同位置 |
| COMMAND > /path 2> &1 | 把錯誤輸出導入正確輸出的文件中 |
| COMMAND > /path 2>> &1 | 追加 |
| &>/dev/null | 正確和錯誤的都重定向到空 |
| COMMAND > /dev/null 2>&1 | 定向到空(同上一個) |
2. 特殊符號/通配符及含義
通配符:通配符是bash的內置功能,其適用范圍在命令行中的普通命令及腳本編程中,跟linux正則表達式有一些區別.
通配符的目的:bash中用於實現文件名"通配",通配符僅僅匹配字符.
| 符號 | 含義 |
| ######路徑位置 | |
| . | 當前目錄 |
| .. | 上一級目錄 |
| - | 上一次所在目錄 |
| ~ | 用戶家目錄 |
| ######模糊匹配 | |
| * | 匹配任意長度的任意字符 |
| ? | 匹配任意單個字符,有且只有一個字符 |
| ! | 取反(正則表達式中,不支持在grep中使用;在find/sed/awk中表示取反) |
| [] | 匹配指定范圍內(中括號內)的任意單個字符 |
| [^] | 匹配指定范圍外(中括號之外)的任意單個字符(非) |
| [!] | 取反,等價於[^] |
| ######引號 | |
| '' | 單引號,強引用,所見即所得,不會做解釋 |
| "" | 雙引號,弱引用,雙引號中的變量或命令或轉移字符會先被解釋 |
| `` | 反引號,引用命令,解釋命令(等價於 $() 或 ${} ) |
| ######其他特殊符號 | |
| \ | 轉義字符,還原原本的意義 |
| ; | 多個命令之間的分隔符(-exec命令中,分號;代表bash的特殊意義) |
| | | 管道COMMAND1 | COMMAND2 | COMMAND3| …后一個命令會將前一個 命令的標准輸出,當做要執行的對象 |
| $ | 1)代表普通用戶的提示符; 2)$(string)代表字符串變量內容 |
| # | 1)在文本中,前面加#代表行內容被注釋; 2)超級管理員的提示符 |
| {} | 1)可以生成序列; 2)shell腳本編程中,用作引用變量,作為變量與普通字符的 分隔,讓變量成為一個整體 |
3. 專用字符集合及其含義
注意:專用字符在命令行中一般需加中括號[]括起來,所以,下表整理成對出現.
| 字符 | 含義 |
| [[:alnum:]] | 任意數字或字母,匹配大小寫字母和數字,等價於字符類'[:alpha:]'與字符類'[:digit:]'的和 |
| [[:alpha:]] | 任意大小寫字母,匹配大小寫字母,等價於字符類'[:lower:]'和字符類'[:upper:]'的和 |
| [[:blank:]] | 空白字符類,包括:空格和制表符 |
| [[:cntrl:]] | 控制字符 |
| [[:digit:]] | [0-9] 中的任意數字 |
| [[:graph:]] | 圖片和圖形 |
| [[:lower:]] | [a-z] 任意小寫字母 |
| [[:print:]] | 可打印字符,字符類'[:alnum:]'與字符類'[:punct:]'和空格的和 |
| [[:punct:]] | 任意標點符號 |
| [[:space:]] | 任意空格字符 |
| [[:upper:]] | [A-Z] 任意大寫字母 |
| [[:xdigit:]] | 十六進制字符 |
4. bash中的邏輯運算符
注意:
1)邏輯運算符遵循從左往右的順序進行運算,邏輯運算符&&和||是短路符號,符號左右兩邊的命令之間具有邏輯關系.
2)聯合使用 && 和 || 的時候,先判斷 邏輯與 再判斷 邏輯或
| 符號 | 含義 |
| && (COMMAND1 && COMMAND2) |
與運算and.COMMAND1執行成功,沒有報錯,COMMAND2才會執行; 若COMMAND1執行報錯,則COMMAND2不會被執行. 判斷命令執行是否成功的依據是echo $? ,若結果是0, 則是命令執行成功,若是其他數值,都是代表命令執行失敗. |
| || (COMMAND1 || COMMAND2) |
或運算or.當COMMAND1執行成功,沒有報錯,COMMAND2不會被執行; 若COMMAND1執行報錯,則COMMAND2會被執行 |
| ! | 1)在bash中表示取反; 2)調用history最近歷史命令 |
| ; (COMMAND1;COMMAND2) |
分號前面的命令出錯也不影響后面的命令執行,即COMMAND 1; COMMAND2都會被執行 |
| & (COMMAND1 & COMMAND2) |
將命令放到后台去執行;如果&兩邊都是命令,則前面的命令會被放到后台執行, 后面的命令也會同時執行,這兩者之間沒有邏輯關系,命令是並行執行的. |
