我想将程序的输出放入文件中。我输入了以下内容:
./prog > log 2>&1
但文件中没有任何内容“日志”。我使用的是Ubuntu 11.10,默认shell是bash。
有人知道这个原因吗以及我该如何调试它?
答案1
script -c "/path/prog" /path/log.txt
有时 shell 重定向不起作用(特别是当一个 shell 生成另一个 shell 时,我想:)。以上是通用解决方案,它只是抓取所有 shell 输出并将其放入文件中。对于您来说,这也应该有效,因为您希望在 stdout/stderr 上输出。
答案2
这在这里有效,当./prog 2>&1 >log.txt
单独使用时,无法正常工作:
./prog 2>&1 |cat >log.txt
答案3
对我有用的是:
./prog >> log 2>> log
>> log
重定向stdout
到文件
2>> log
重定向stderr
到文件
&>>
其他人使用两者的简写stdout
,stderr
但我的 Mac 和 Ubuntu 都不接受它 :(
额外:>
覆盖,同时>>
附加