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

Nic*_*unt 2 haskell ghc

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

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

我试过了:

ghc File.hs > errors.log
ghc File.hs >> errors.log
ghc File.hs | more
Run Code Online (Sandbox Code Playgroud)

他们都没有工作.使用>>>仅将前几行写入文件,然后将其余行写入标准输出.使用more,less,cat等不作任何差别.

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

(我应该让你知道我正在使用Cygwin在Windows机器上工作.)

sar*_*old 9

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

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

ghc File.hs > output.log 2> errors.log
Run Code Online (Sandbox Code Playgroud)

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

ghc File.hs > output.log 2>&1
Run Code Online (Sandbox Code Playgroud)

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