Whatis 指令輸出重新導向錯誤

Whatis 指令輸出重新導向錯誤

執行以下操作,它會起作用

~$whatis `ls /bin`
stty (1)             - change and print terminal line settings

stty (2)             - unimplemented system calls

su (1)               - change user ID or become superuser

etc...

將輸出重定向到文件,我得到這個?

~$ whatis `ls /bin` > blah

kmod: nothing appropriate.

ntfsck: nothing appropriate.

答案1

>只重定向標準輸出 ( stdout),但當whatis找不到有關檔案的資訊時,它會將其寫入不同的流 ( ) stderr。您也可以使用檔案句柄 2 來重定向它2>stderr&>2>&1

您可以閱讀有關重定向的所有內容這裡

因此,在您的範例中,如果您希望所有錯誤以及成功最終結束,blah您可以這樣做

whatis `ls /bin` &> blah

或者,使用目前首選的備用子 shell 語法:

whatis $(ls /bin) &> blah

雖然/bin不太可能有,但要做這樣的事情要小心。的結果ls /bin將受到分詞的影響,因此如果其中的任何檔案包含空格,它們將被視為 的不同參數whatis。這就是為什麼您通常不鼓勵解析輸出ls(請參閱這個問題進行討論)

你可以做你正在嘗試的不同的事情,例如

find /bin -maxdepth 1 -type f -exec whatis {} + &> blah

它將查找/bin而不是更深入(如 glob),然後只查找檔案(參數type f),並且對於它找到的每個內容,它將執行whatis,然後執行我們討論過的相同重定向。

答案2

什麼是 搜尋一組包含關鍵字系統命令簡短描述的資料庫文件,並將結果顯示在標準輸出上。僅顯示完整的單字匹配。

kmod:沒有什麼合適的。 有一條訊息表明,它沒有找到 kmod 的任何內容。

如果你想重定向所有輸出,那麼試試這個..

whatis $(ls /bin) > /tmp/a.txt

相關內容