到目前为止,我已经尝试了以下方法:
me@pc:~/code$ ghc file.hs -Wall | tee warnings.log
me@pc:~/code$ ghc file.hs -Wall > warnings.log
但是ghc
只会像正常情况一样显示警告,并且只会通过非警告步骤。
有没有办法做到这一点?
答案 0 :(得分:7)
之所以仍然显示这些警告,是因为警告和错误打印在标准的 error 通道(stderr)上。
因此,您可以通过以下方式通过重定向stderr将错误重定向到文件:
ghc file.hs -Wall 2> warnings.log
请注意2
中的2>
。如前所述,警告和例外都将打印到该通道。
我们可以使用以下方法将错误流重定向到tee
中的bash
:
ghc -Wall file.hs 2> >(tee warnings.log)
此功能适用于bash
,但据我所知,这不是POSIX标准中定义的。对于bash
,此方法有效,但对于sh
,此方法似乎失败。