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