执行以下操作,它会起作用
~$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 来重定向它。您可以像这样重定向 stdout 和 stderr 2>
,或者您可以通过执行以下操作将 stderr 重定向到 stdoutstderr
&>
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