好久沒寫Linux的學習博客了,今天繼續
以下是對管道符、重定向與環境變量的學習記錄
學習資源爲:《Linux就該這麼學》
1、輸入輸出重定向
簡而言之,輸入重定向是指把文件導入到命令當中,而輸出重定向則是指把原本要輸出到屏幕的信息寫入到指定文件中。
- 標準輸入重定向(STDIN,文件描述符爲0):默認從鍵盤輸入,也可從其他文件或命令中輸入
- 標準輸出重定向(STDOUT,文件描述符爲1):默認輸出到屏幕
- 錯誤輸出重定向(STDERR,文件描述符爲2):默認輸出到屏幕
對於輸入重定向來說,用到的符號如下:
輸入重定向中用到的符號及其作用
符號 | 作用 |
---|---|
命令 < 文件 | 將文件作爲命令的標準輸入 |
命令 << 分界符 | 從標準輸入中讀入,直到遇見分界符才停止 |
命令 < 文件1 < 文件2 | 將文件1作爲命令的標準輸入並將標準輸出到文件2 |
對於輸出重定向來說,用到的符號如下
輸出重定向中用到的符號及其作用
符號 | 作用 |
---|---|
命令 > 文件 | 將標準輸出重定向到一個文件中(清空原有文件數據) |
命令 2> 文件 | 將錯誤輸出重定向到一個文件中(清空原有文件數據) |
命令 >> 文件 | 將標準輸出重定向到一個文件中(追加到原有內容後面) |
命令 2>> 文件 | 將錯誤輸出重定向到一個文件中(追加到原有內容後面) |
命令 >> 文件 2> &1 或 命令 &>> 文件 | 將標準輸出於錯誤輸出共同寫入到文件中(追加到原有內容後面) |
我們首先用標準輸出重定向小試牛刀一下
可以看到,我將test_a.txt的文件信息輸出到readme.txt中
我們再試一下將錯誤輸出重定向追加到readme.txt中
可以看到,我們查詢xxxxxx.txt文件的錯誤信息追加到原數據後面了
還是非常方便好用的
輸入重定向用的比較少,我們來舉個例子:
我們用輸入重定向把readme.txt文件導入wc -l命令,統計有多少行
ok,我們看到效果了,我們readme.txt有兩行數據
2、管道命令符
管道命令符可以用一句話來概括:把前一個命令原本要輸出到屏幕的標準正常數據當作是後一個命令的標準輸入
如下:
我們把原本要輸出到屏幕的用戶信息列表再交給wc命令作進一步的處理
可以看到,我們第一條命令的輸出有20行
3、命令行的通配符
顧名思義,通配符就是通用的匹配信息的的符號,比如說(*)代表匹配零個或多個字符,問號(?)代表匹配單個字符,中括號內加上數字[0-9]代表匹配0到9之間的單個數字的字符,而中括號加上字母[abc]則是代表匹配啊a、b、c三個字符中的任意一個字符
如:
匹配test開頭的文件
4、常用的轉義字符
4個最常用的轉義字符如下所示:
- 反斜槓(\):使反斜槓後面的一個變量變爲單純的字符串。
- 單引號(’’):轉義其中所有的變量爲單純的字符串。
- 雙引號(""):保留其中的變量屬性,不進行轉義處理。
- 反引號:把其中的命令執行後返回結果
如下的例子:
1、我們定義了一個PRICE的變量,並進行輸出
2、我們想輸出$ 5,但是$$的作用是顯示當前程序的進行ID號碼
3、我們使用轉義字符實現了第二的目的
5、重要的環境變量
PATH變量的作用是什麼?
設定解釋器搜索所執行命令的路徑
有一個比較經典的問題:爲什麼不能將當前目錄(.)添加到PATH中呢?這個是可以實現的,雖然從某種程度上方便了用戶免去輸入命令所在路徑的麻煩,但是,如果黑客在比較常用的公共目錄下存放一個與ls或cd相同命令的木馬文件,恰巧用戶執行了,那麼就極有可能中招了。
在接手一臺Linux系統後一定要檢查PATH變量中是否有可疑目錄。
我們可以通過env命令查看Linux系統的所有環境變量
以下是重要的10個環境變量:
變量名稱 | 作用 |
---|---|
HOME | 用戶的主目錄 |
SHELL | 用戶在使用的Shell解釋器的名稱 |
HISTSIZE | 輸出的歷史命令記錄條數 |
HISTFILESIZE | 保存的歷史命令記錄條數 |
MALL | 郵件保存路徑 |
LANG | 系統語言、語系名稱 |
RANDOM | 生成一個隨機數字 |
PS1 | Bash解釋器的提示符 |
PATH | 定義解釋器搜素用戶執行命令的路徑 |
EDITOR | 用戶默認的文本編輯器 |
最後再提一點:export可以使一個局部變量升級爲全局變量
這一章的東西有點複雜,要多多複習了