2012-01-23 15 views
2

我想編譯一個haskell文件,它有大量的錯誤。我想開始調試第一個,但不幸的是有很多,他們離開了屏幕。如何讓GHC將編譯錯誤輸出到文件而不是標準輸出?

我想將錯誤消息傳遞給一個文件,以便我可以從頂部讀取,但普通方法似乎不起作用。

我已經試過:

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

他們沒有工作。使用>>>僅將第一對幾行寫入文件,然後將其餘部分寫入標準輸出。使用moreless,cat等根本沒有任何區別。

是否有一個GHC標誌讓我輸出到文件?

(也許我應該讓你知道,我的工作在Windows機器上使用Cygwin。)

回答

9

大多數程序輸出寫到標準輸出(文件描述符1)和標準錯誤的錯誤信息(文件描述符2)。

你可以問問你的shell標準錯誤重定向到另一個位置是這樣的:

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

,或者如果你希望他們在同一個文件:

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

見你的shell手冊頁部分重定向的全部細節。請注意,外殼對重定向的順序很挑剔。

+0

謝謝您!現在你提到它很明顯。 –

4

也可以直接查看輸出,使用相同的重定向作爲sarnold的解決方案,但是沒有中間輸出文件:

ghc File.hs 2>&1 | less 

(這同樣適用於more代替less等)

+3

當我在'bash(1)'manpage附近打獵以確保我的答案中的順序正確時,我發現了'|&'標記 - 您可以使用'gch File.hs |&less'一樣的東西! 18年來,我一直在使用Linux和_today_我學到了這一點。驚人。 :) – sarnold

相關問題