日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

(010) Linux之I/O重定向

發布時間:2024/6/18 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (010) Linux之I/O重定向 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

十年運維系列之基礎篇 - Linux

作者:曾林?

聯系:1494445739@qq.com

網站:www.jplatformx.com

版權:文章未經同意請勿轉載


一、引言

? ? ? 這里我們來討論Linux中命令行一個很酷的功能,那就是I/O重定向。I/O是輸入/輸出的縮寫。這個功能可以把命令行的輸入重定向為從文件中獲取內容,也可以把命令行的輸出結果重定向到文件中。如果我們將多個命令行關聯起來,將形成非常強大的功能——管道。

?

二、標準輸入、標準輸出和標準錯誤

? ? ? 到目前為止,我們使用過的很多程序生成了不同種類的輸出。這些輸出通常包含兩種類型。一種是程序運行的結果,即該程序生成的數據;另一種是狀態和錯誤信息,表示程序當前的運行情況。比如輸入ls這樣的命令,屏幕上將顯示它的運行結果或者是它的相關錯誤信息。

? ? ? 與UNIX“一切都是文件”的思想一致,類似ls的程序實際上把它們的運行結果發送到了一個稱為標準輸出(standard output,通常表示為stdout)的特殊文件中,它們的狀態信息則發送到了另一個稱為標準錯誤(standard error,表示為stderr)的文件中。默認情況下,標準輸出和標準錯誤都將被鏈接到屏幕上,并且不會被保存在磁盤文件中。

? ? ? I/O重定向功能可以改變輸出內容發送的目的地,也可以改變輸入內容的來源地。通常來說,輸出內容顯示在屏幕上,輸入內容來自于鍵盤。但是使用I/O重定向功能可以改變這一慣例。

?

三、標準輸出重定向

? ? ? I/O重定向功能可以重新定義標準輸出內容發送到哪里。使用重定向操作符“>",后面接文件名,就可以把標準輸出重定向到另一個文件中,而不是顯示在屏幕上。比如使用命令“ls -l /usr/bin > ls-output.txt”,將原本輸出到屏幕上的內容重定向到了文件ls-output.txt中。但是需要注意的是使用重定向操作符">"會重新改寫文件的內容,比如上面的命令如果執行第二遍的話,首先會將ls-output.txt原始內容刪除,然后再進行第二次輸出。事實上,如果我們需要刪除一個文件內容(或者創建一個新的空文件),可以采用這樣的方式。例如:"> ls-output.txt"命令僅僅使用了重定向符,并在它之前不加任何命令,就可以刪除一個已存在的文件內容或者創建一個新的空文件。

? ? ? 那么,我們如何能夠不從文件的首位置開始覆蓋文件,而是從文件的尾部開始添加輸出內容呢?可以使用重定向符“>>”來實現。比如:

? ? ? ls -l /usr/bin >> ls-output.txt

?

四、標準錯誤重定向

? ? ? 標準錯誤的重定向并不能簡單地使用一個專用的重定向符來實現。要實現標準錯誤的重定向,不得不提到它的文件描述符(file descriptor)。一個程序可以把生成的輸出內容發送到任意文件流。如果把這些文件流中的前三個分別對應標準輸入文件、標準輸出文件和標準錯誤文件,那么shell將在內部用文件描述符分別索引它們為0、1和2。shell提供了使用文件描述符編號來重定向文件的表示法。由于標準錯誤等同于文件描述符2,所以可用這種表示法來重定向標準錯誤。

? ? ? ls -l /bin/usr 2>ls-err.txt

? ? ? 文件描述符“2”緊放在重定向符之前,將標準錯誤重定向到ls-err.txt文件中。

?

五、將標準輸出和標準錯誤重定向到同一個文件

? ? ? 在許多情況下,我們會希望把一個命令的所有輸出內容都放在同一個獨立的文件中。為此,我們必須同時重定向標準輸出和標準錯誤。有兩種方法可以滿足要求。第一種是傳統的方法,在舊版本的shell中使用。

? ? ? ls -l /bin/usr > ls-output.txt 2>&1

? ? ? 使用這個方法,將執行兩個重定向操作。首先重定向標準輸出到ls-output.txt文件中,然后使用標記符2>&1把文件描述符2(標準錯誤)重定向到文件描述符1(標準輸出)中。

? ? ? 這些重定向操作的順序是非常重要的。標準錯誤的重定向操作通常發生在標準輸出重定向操作之后,否則它將不起作用。

? ? ? 最近的bash版本提供了效率更高的第二種方法來實現這一聯合的重定向操作。

? ? ? ls -l /bin/usr &> ls-output.txt

? ? ??在這個例子中,只使用一個標記符“&>”就把標準輸出和標準錯誤都重定向到了ls-output.txt文件中。

?

六、處理不想要的輸出

? ? ? 有時候“沉默是金”,命令執行后我們并不希望得到輸出,而是想把這個輸出丟棄,尤其是在輸出錯誤和狀態信息的情況下更為需要。系統提供了一種方法,即通過把輸出重定向到一個稱為/dev/null的特殊文件中來實現它。這個文件是一個稱為位桶(bit bucket)的系統設備,它接受輸入但是不對輸入進行任何處理。以下命令可以用來抑制(即隱藏)一個命令的錯誤信息。

? ? ? ls -l /bin/usr 2>/dev/null

? ? ? UNIX文化中的/dev/null,位桶(bit bucket)是一個古老的unix概念,由于它的普適性,它出現在unix文化的很多地方。因此當某人說他正在把你的意見發送到"dev null"的時候,現在你知道他是什么意思了:-)。

?

轉載于:https://www.cnblogs.com/jplatformx/p/4296717.html

總結

以上是生活随笔為你收集整理的(010) Linux之I/O重定向的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。