将标准输出/错误重定向到日志文件

19
寻找在Tcsh shell中将标准错误和标准输出重定向到日志文件的方法。 尝试了`./ShellFile.sh 2>&1 | pathToLogFile.log`,但出现了“模棱两可的输出重定向”错误。 欢迎任何意见。
3个回答

38

首先,它不会是:

./ShellFile.sh 2>&1 | pathToLogFile.log

因为这样会尝试将你的输出通过名为 pathToLogFile.log 的可执行文件传输,而不是将输出发送到那里。

你需要:

./ShellFile.sh >& pathToLogFile.log

该命令将标准输出和错误都重定向到文件中。


谢谢你的提示。但是这会覆盖 pathToLogFile.log 的内容。如果我们只想追加到 pathToLogFile.log,该怎么办? - Sanjeev Kumar Dangi
3
@Sanjeev,那么你应该提出你自己的问题,并附上具体要求,而不是试图在评论区提出问题,因为很少有人会看到 :-) 这样,SO才能正常运作,为特定的问题提供具体的答案。 作为提示,您可能需要查看>>& - paxdiablo
感谢您的回答。有些答案对c shell无效,但这个确实有效。 - Rajasekhar
在树莓派上,这会出现错误:“语法错误:坏的文件描述符号”。 - Mark Ch
@MarkCh,我的第一反应是你没有运行tcsh或者RaspPi下的版本有些不足之处。在Linux的tcsh下它可以正常工作。 - paxdiablo
@paxdiablo 我错了,没有认真看清楚问题。不过我还是会留下我的评论,毫无疑问会有别人犯同样的错误。 - Mark Ch

8

顺便说一下,如果您想在终端 和 文件中都看到输出,则 tee(1) 可能会很有用。

  ./script 2>&1 | tee logfile.txt

在我的测试中,这在tcsh中不起作用,但在bash中起作用。 - Stuart

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接