?????? I/O重定向與管道
一個程序最基礎的部分就是輸入數據,通過指令對其進行加工,輸出出一個結果。在這個過程中,我們輸入的數據(Input)和我們輸出的數據(Output)合稱為I/O設備。通常數據輸入來自于我們的鍵盤和鼠標,即人為的輸入。我們稱這個輸入叫做標準輸入(STDIN)–0;而輸出到終端端口的正確結果我們叫做標準輸出(STOUT)–1;輸出的錯誤結果叫做標準錯誤(STERR)–2。I/O重定向的意思就是改變默認的輸入輸出方式,即重新定義輸入的方式,使標準輸入不僅僅來自鍵盤,也可以來自上一個命令的標準輸出等。
?????? 把標準輸出和錯誤輸出重定向到文件
改變文件的輸出位置,將其輸出到指定文件中,其中包括標準輸出和標準錯誤。對于標準輸出我們可以通過 ” >? ”來重定向(原文件可不存在),對于標準錯誤通過” 2> ” 來重定向。具體操作格式為:
命令 操作符號 文件名
通過某些命令產生新的輸出,通過操作符號將其輸入到文件中(而不是默認的輸出到屏幕中)
也可以通過符號”&>和2>&1″將兩種輸出重定向到同一文件。若目標文件中有數據,符號”>”將清空原有數據并覆蓋。可使用符號”>>”追加到目標文件,標準錯誤同理。
????? 從文件中導入標準輸入
從文件中導入標準輸入,不在通過人為的敲打字符,我們稱之為輸入重定向,通過符號”<“實現??赏ㄟ^輸入重定向將需要的數據通過命令來輸入。具體操作格式:
命令? 操作符號 文件名
通過某些命令來改變文件的數據使其作為標準輸入。(例如tr命令)
?????? tr命令
tr?? [optins]??? [set1] [set2]
tr命令可刪除或轉換字符(將第一字符集set1的內容轉換為set2),通過tr命令我們可以修改文本后將其作為標準輸入。例如tr? ‘a-z’? ‘A-Z’就是將指定文本的小寫字母轉換為大寫字母。tr命令也可預定義字符集,即tr? ‘[:lower:]’? ‘[:upper:]’
常用的選項
-c :取字符集的補集
-s:將連續重復的字符轉換為一個字符
-d:刪除字符集里面的字符
-t:將第一字符集的內容轉換成第二字符集的內容
????? 單行重定向與多行重定向
使用單行重定向時,在某些交互式重定向中(如’cat? >? file’),輸入文本后需要Ctrl+d退出,而且輸出的是純文本,并不能識別命令。多行重定向可以改變這些缺陷,多行重定向就是在文本開始時設置終符’>>EOF'(此時EOF為終止符)只有輸入終止符才算結束輸出,而且多行重定向中可識別命令,使重定向的文本內容更加靈活。
管道
管道技術就是使用符號”|”將多個命令鏈接在一起,使前一個命令的標本輸出作為后面命令的標準輸入。例如cmd1|cmd2|cmd3中,首先將cmd1的標準輸出作為cmd2的標準輸入,再將其標準輸出作為cmd3的標準輸入,以此類推。管道技術默認不可轉換標準錯誤,我們可以通過”2>&1和|&”將其轉換。
我們也可以在管道中使用tee命令將輸出重定向到多個目標。即在管道中加入”tee -a file”,這樣我們就可以在管道的中間查看和記錄不同階段的輸出,便于在出現問題時排除故障。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88644