初學Linux之標準I O和管道

2022-09-17 03:54:13 字數 2624 閱讀 3003

標準輸入和輸出

程式是由指令+資料組成

程式的資料流有三種:

輸入資料流:<–標準輸入(stdin),一般預設是鍵盤

輸出資料流:–>標準輸出(stdout),一般預設到終端視窗

錯誤輸出流:–>標準錯誤(stderr),一般預設到終端視窗

標準輸入:0

標準輸出:1

錯誤輸出:2

i/o重定向:改變預設位置

輸出重定向將標準輸出(stdout)和標準錯誤(stderr)重定向到指定位置

格式: 命令 操作符號 檔名

支援的操作符號:

> :把標準輸出(stdout)重定向到檔案,會覆蓋原檔案內容

>> :把標準輸出(stdout)重定向到檔案,會在原有內容基礎上,追加內容

說明:上面是講ll顯示的結果輸出重定向到檔案file中,使用》時,file檔案被覆蓋了,使用》時,原檔案file和重定向的內容都顯示了,是追加內容

2> :把標準錯誤(stderr)重定向到檔案,會覆蓋原內容

2>>:把標準錯誤(stderr)重定向到檔案,會在原內容基礎上,追加內容

說明:將命令執行的錯誤結果顯示在file檔案中,使用2>時,覆蓋了原檔案file輸出的,使用2>>時,原文 件內容和標準錯誤都顯示了,是追加內容

&>:把所有的輸出重定向到檔案,不管對錯都輸出到指定位置,覆蓋輸出

&>>:把所有的輸出重定向到檔案,不管對錯都輸出到指定位置,追加輸出

說明:使用&>或者&>>時,執行ll時,是標準輸出,lls是標準錯誤,但是不管是哪個的輸出都重定向到file 檔案中,2>&1和&>,&>>效果一樣,2>&1是老版本使用,要在最後使用,才有效果。

command >/path/toshmefile 2>&1

command>>/path/to/somefile 2>&1

理解:a和b,將a輸出到b上,如果對了,就正常輸出到b上,如果錯誤了,內容還是輸出在b上

set -c:禁止將內容覆蓋已有的檔案,但是可以追加強制覆蓋 :

set +c:允許覆蓋

合併多個程式的標準輸出

(command ;command)>file

說明:將ll和echo shell的標準輸出一起重定向到file檔案中,此法只能用於標準輸出,

標準錯誤不能使用

tr:轉換和刪除字元

tr [option] .. set1 [set2]==>非必選

選項:-c:取字元的補集==>取代所有不屬於第一字符集的字元

-d:刪除所有屬於第乙個字符集的字元

-s:把連續重複的字元以單獨乙個字元表示

-t:將第乙個字符集對應字元轉換為第二字符集對應的字

管道使用符號|來連線命令

command1 |command2 |command3…

1.將命令1的標準輸出傳送給命令2,作為命令2的標準輸入,命令2的標準輸出發給command3,作為command3 的標準輸入….

2.標準錯誤預設不能通過管道**,但是可以利用2>&1或者|&實現

3.最後乙個命令會在當前shell 程序的子shell 程序中執行

4.可以組合多種工具

tee命令:

command1 |tee filename | command2

把command1的標準輸出儲存在檔案中,然後管道輸入給command2

特點:1.儲存不同階段的輸出

2. 複雜管道的故障排除

3.同時檢視和記錄輸出

練習

1、將/etc/issue檔案中的內容轉換為大寫後儲存至/tmp/issue.out檔案中

ls /etc/issue |tr "

a-z"

"a-z

"out

2、將當前系統登入使用者的資訊轉換為大寫後儲存至/tmp/who.out檔案中

who am i |tr "

a-z"

"a-z

"3、將/root/下檔案列表,顯示成一行,並檔名之間用空格隔開

ls /root/ |tr '\n'

''4、計算1+2+3+..+99+100的總和

echo |tr '''

+' |bc

5、處理字串「xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4」,只保留其中的數字和空格

echo "

xt.,l 1 jr#-dmn 2 c*/fe 3 uz 4

" |tr -dc '

0-9''

'6、將path變數每個目錄顯示在獨立的一行

echo $path |tr ":"

"\n"7、將指定檔案中0-9分別替代成a-j

cat /etc/issue | tr '

0-9'

'a-j

'8、將檔案/etc/centos-release中每個單詞(由字母組成)顯示在獨立的一行,並無空行

cat /etc/centos-release | tr """

\n"

Linux標準I O和管道

程式 指令 資料 linux給程式提供三種 i o 裝置 標準輸入 stdin 0 預設接受來自鍵盤的輸入 標準輸出 stdout 1 預設輸出到終端視窗 標準錯誤 stderr 2 預設輸出到終端視窗 i o重定向 改變預設位置 重定向操作符 把標準輸出重定向到檔案 ls lh data ls.l...

標準I O和管道

標準輸入 0 標準輸出 1 錯誤輸出 2標準輸入 stdin 0 預設接受來自鍵盤的輸入 標準輸出 stdout 1 預設輸出到終端視窗 標準錯誤 stderr 2 預設輸出到終端視窗改變檔案儲存的預設位置 格式 命令 操作符號 檔名 支援的操作符號包括 把標準輸出重定向到檔案 把輸出內容重定向追加...

標準I O和管道

重定向 redirect 標準輸入和輸出程式 指令 資料 讀入資料 input 輸出資料 output 開啟的檔案都有乙個fd file descriptor 檔案描述符 dev std proc self fd 終端linux給程式提供三種i o管道標準輸入 stdin 0 預設接受來自鍵盤的輸入...