我正在尝试编译一个包含大量错误的haskell文件。我想开始调试第一个,但不幸的是有很多它们离开了屏幕。
我想将错误消息传递给文件,以便我可以从顶部读取,但是正常的方法似乎不起作用。
我试过了:
ghc File.hs > errors.log
ghc File.hs >> errors.log
ghc File.hs | more
它们都不起作用。使用>
和>>
仅将前几行写入文件,然后将其余行写入标准输出。使用more
,less
,cat
等并没有任何区别。
是否有GHC标志可以让我输出到文件?
(我应该让你知道我正在使用Cygwin处理Windows机器。)
答案 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
等。)