为什么`2>&1`在此管道中不起作用?

为什么`2>&1`在此管道中不起作用?

我找不到在 NAS 上重定向错误的方法。

shell 是/bin/sh,当我使用时,> mylogfile.log 2>&1我仍然看到终端上打印的错误。具体命令是

find /volume1/ | grep "totoro" > ~/totoro.log 2>&1

我看到错误find。有什么方法可以让重定向正常工作吗?如何find在日志文件中写入错误?

答案1

find /volume1/ | grep "totoro" > ~/totoro.log 2>&1

2>&1影响您,而不是。在下面的命令中,第一个影响:grepfind2>&1find

find /volume1/ 2>&1 | grep "totoro" > ~/totoro.log 2>&1   # probably wrong

但这会将 stderr 和 stdout 从 发送findgrep。您可能不想grep从 过滤 stderr find。我猜您想捕获整个组合命令的 stdout 和 stderr 。如果是这样,请在显式子 shell 中运行该命令并重定向其输出和错误流:

(find /volume1/ 2>&1 | grep "totoro") > ~/totoro.log 2>&1

答案2

请参阅“tee”命令。它从标准输入读取并写入标准输出和文件。这在这里很有用。

相关内容