亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何管道標準,而不是標準?

如何管道標準,而不是標準?

喵喵時光機 2019-07-01 11:03:55
如何管道標準,而不是標準?我有一個程序可以把信息寫到stdout和stderr我需要grep通過即將到來的斯泰爾漠視標準輸出.我當然可以分兩步做:command > /dev/null 2> temp.file grep 'something' temp.file但我更愿意在沒有臨時文件的情況下做到這一點。有什么聰明的管道技巧嗎?
查看完整描述

3 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

首先將stderr重定向到stdout-管道;然后將stdout重定向到/dev/null(不改變stderr的去向):

command 2>&1 >/dev/null | grep 'something'

有關I/O重定向的所有種類的詳細信息,請參閱重定向在巴什參考手冊中。

注意,I/O重定向的順序是從左到右解釋的,但管道是在解釋I/O重定向之前設置的。文件描述符(如1和2)是對打開的文件描述的引用。手術2>&1使文件描述符2(即stderr)引用與文件描述符1(即stdout)當前引用的文件描述符相同的打開文件描述(請參見dup2()open())。手術>/dev/null然后更改文件描述符1,使其引用打開的文件描述。/dev/null,但這并不改變文件描述符2引用文件描述符1最初指向的打開文件描述的事實-即管道。


查看完整回答
反對 回復 2019-07-01
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

在Bash中,還可以使用過程替代:

command > >(stdlog pipe)  2> >(stderr pipe)

就本案而言:

command 2> >(grep 'something') >/dev/null


查看完整回答
反對 回復 2019-07-01
  • 3 回答
  • 0 關注
  • 487 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號