我正在尝试编译一个包含大量错误的 haskell 文件。我想开始调试第一个,但不幸的是有太多,以至于它们超出了屏幕。
我想将错误消息通过管道传输到一个文件,以便我可以从顶部读取,但普通方法似乎不起作用。
我已经尝试过:
ghc File.hs > errors.log
ghc File.hs >> errors.log
ghc File.hs | more
它们都不起作用。使用
>
和 >>
仅将前几行写入文件,然后将其余行写入标准输出。使用 more
、less
、cat
等根本没有任何区别。
GHC 是否有一个标志可以让我输出到文件?
(我可能应该让您知道我正在使用 Cygwin 在 Windows 计算机上工作。)
大多数程序将输出写入标准输出(文件描述符
1
),并将错误消息写入标准错误(文件描述符 2
)。
您可以要求 shell 将标准错误重定向到另一个位置,如下所示:
ghc File.hs > output.log 2> errors.log
或者如果您希望它们位于同一个文件中:
ghc File.hs > output.log 2>&1
有关完整详细信息,请参阅 shell 的联机帮助页重定向部分。请注意,shell 对重定向的顺序很挑剔。
您还可以使用与 sarnold 解决方案相同的重定向直接查看输出,但没有中间输出文件:
ghc File.hs 2>&1 | less
(同样适用于
more
而不是 less
等)