執行以下操作,它會起作用
~$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