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 来重定向它。您可以像这样重定向 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

相关内容