如何让GHC将编译错误输出到文件而不是标准输出?

时间:2012-01-23 01:18:44

标签: haskell ghc

我正在尝试编译一个包含大量错误的haskell文件。我想开始调试第一个,但不幸的是有很多它们离开了屏幕。

我想将错误消息传递给文件,以便我可以从顶部读取,但是正常的方法似乎不起作用。

我试过了:

ghc File.hs > errors.log
ghc File.hs >> errors.log
ghc File.hs | more

它们都不起作用。使用>>>仅将前几行写入文件,然后将其余行写入标准输出。使用morelesscat等并没有任何区别。

是否有GHC标志可以让我输出到文件?

(我应该让你知道我正在使用Cygwin处理Windows机器。)

2 个答案:

答案 0 :(得分:9)

大多数程序将输出写入标准输出(文件描述符1),并将错误消息写入标准错误(文件描述符2)。

您可以要求shell将标准错误重定向到另一个位置,如下所示:

ghc File.hs > output.log 2> errors.log

或者如果你想要它们在同一个文件中:

ghc File.hs > output.log 2>&1

有关完整详细信息,请参阅shell的重定向的联机帮助页部分。请注意,shell对重定向的顺序很挑剔。

答案 1 :(得分:4)

您也可以使用与sarnold解决方案相同的重定向直接查看输出,但不使用中间输出文件:

ghc File.hs 2>&1 | less

(同样适用于more而不是less等。)