Linux / Unix示例中的輸入輸出重定向

Linux / Unix示例中的輸入輸出重定向

什么是重定向?

重定向是Linux中的一項功能,因此在執(zhí)行命令時,您可以更改標(biāo)準(zhǔn)輸入/輸出設(shè)備。任何Linux命令的基本工作流程都是輸入并提供輸出。

  • 標(biāo)準(zhǔn)輸入(stdin)設(shè)備是鍵盤。
  • 標(biāo)準(zhǔn)輸出(標(biāo)準(zhǔn)輸出)設(shè)備是屏幕。

通過重定向,可以更改上述標(biāo)準(zhǔn)輸入/輸出。

在本教程中,我們將學(xué)習(xí) -

[TOC]

輸出重定向

“> ”符號用于輸出(stdout)重定向。

例:

ls -al> listings

這里命令ls -al的輸出被重定向到文件“l(fā)isting”而不是你的屏幕。

Linux / Unix中的重定向 - 揭秘!

注意:在將命令輸出重定向到文件時使用正確的文件名。如果存在具有相同名稱的現(xiàn)有文件,則重定向命令將刪除該文件的內(nèi)容,然后可能會被覆蓋?!?/p>

如果您不希望覆蓋文件但想要向現(xiàn)有文件添加更多內(nèi)容,則應(yīng)使用“>> ”運(yùn)算符。

您可以將標(biāo)準(zhǔn)輸出重定向到文件,還可以重定向到設(shè)備!

$ cat music.mp3> / dev / audio

cat命令讀取文件music.mp3并將輸出發(fā)送到作為音頻設(shè)備的/ dev / audio。如果PC中的聲音配置正確,此命令將播放music.mp3文件

輸入重定向

“< ”符號用于輸入(STDIN)重定向

示例:Linux中的郵件程序可以幫助您從終端發(fā)送電子郵件。

您可以使用標(biāo)準(zhǔn)設(shè)備鍵盤鍵入電子郵件的內(nèi)容。但是,如果要將文件附加到電子郵件,則可以使用以下格式的輸入重定向運(yùn)算符。

Mail -s“Subject”to-address <Filename

這會將文件附加到電子郵件中,然后將其發(fā)送給收件人。

上面的例子很簡單。讓我們看看一些利用文件描述符的高級重定向技術(shù)。

文件描述符(FD)

在Linux / Unix中,一切都是文件。常規(guī)文件,目錄,甚至設(shè)備都是文件。每個文件都有一個名為文件描述符(FD)的關(guān)聯(lián)編號。

您的屏幕還有一個文件描述符。執(zhí)行程序時,輸出將被發(fā)送到屏幕的文件描述符,您可以在顯示器上看到程序輸出。如果輸出發(fā)送到打印機(jī)的文件描述符,則程序輸出將被打印。

錯誤重定向

無論何時在終端執(zhí)行程序/命令,總共打開3個文件,即標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯誤。

運(yùn)行程序時,這些文件始終存在。如前所述,文件描述符與這些文件中的每一個相關(guān)聯(lián)。

文件 文件描述符
標(biāo)準(zhǔn)輸入STDIN 0
標(biāo)準(zhǔn)輸出STDOUT 1
標(biāo)準(zhǔn)錯誤STDERR 2

默認(rèn)情況下,錯誤流顯示在屏幕上。錯誤重定向?qū)㈠e誤路由到屏幕以外的文件。

為什么錯誤重定向?

錯誤重定向是Unix / Linux的一個非常流行的功能。

頻繁的UNIX用戶會認(rèn)為許多命令會給你帶來大量錯誤。

  • 例如,在搜索文件時,通常會獲得權(quán)限拒絕錯誤。這些錯誤通常無助于搜索特定文件的人。
  • 在執(zhí)行shell腳本時,您通常不希望錯誤消息使正常的程序輸出變得混亂。

解決方案是將錯誤消息重定向到文件。

例1

$ myprogram 2> errorsfile

上面我們正在執(zhí)行一個名為myprogram的程序。

標(biāo)準(zhǔn)錯誤的文件描述符是2。

使用“2>”我們將錯誤輸出重定向到名為“errorfile”的文件

因此,程序輸出不會出錯。

例2

這是另一個使用find語句的例子 -

find . -name'my *'2> error.log

使用“查找”命令,我們正在搜索“?!?“name”以“my”開頭的文件的當(dāng)前目錄

示例3讓我們看一個更復(fù)雜的例子,

服務(wù)器管理員經(jīng)常列出目錄并將錯誤和標(biāo)準(zhǔn)輸出存儲到文件中,以后可以處理。這是命令。

ls Documents ABC> dirlist 2>&1

這里,

  • 它將一個文件的輸出寫入另一個文件的輸入。2>&1表示STDERR重定向到STDOUT的目標(biāo)(這是文件dirlist)
  • 我們將錯誤輸出重定向到標(biāo)準(zhǔn)輸出,而標(biāo)準(zhǔn)輸出又被重定向到文件轉(zhuǎn)向器。因此,輸出都寫入文件dirlist
Linux / Unix中的重定向

總結(jié)

  • Linux中的每個文件都有一個與之關(guān)聯(lián)的相應(yīng)文件描述符
  • 鍵盤是標(biāo)準(zhǔn)輸入設(shè)備,而屏幕是標(biāo)準(zhǔn)輸出設(shè)備
  • “>”是輸出重定向運(yùn)算符?!?gt;>”將輸出附加到現(xiàn)有文件
  • “<”是輸入重定向運(yùn)算符
  • “>&”將一個文件的輸出重定向到另一個文件。
  • 您可以使用相應(yīng)的文件描述符2重定向錯誤。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容