如何将GHC编译错误输出或重定向到文件而不是标准输出?

问题描述 投票:0回答:2

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

我想将错误消息通过管道传输到一个文件,以便我可以从顶部读取,但普通方法似乎不起作用。

我已经尝试过:

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

它们都不起作用。使用

>
>>
仅将前几行写入文件,然后将其余行写入标准输出。使用
more
less
cat
等根本没有任何区别。

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

(我可能应该让您知道我正在使用 Cygwin 在 Windows 计算机上工作。)

haskell ghc
2个回答
9
投票

大多数程序将输出写入标准输出(文件描述符

1
),并将错误消息写入标准错误(文件描述符
2
)。

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

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

或者如果您希望它们位于同一个文件中:

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

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


4
投票

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

ghc File.hs 2>&1 | less

(同样适用于

more
而不是
less
等)

© www.soinside.com 2019 - 2024. All rights reserved.