2017-07-14 34 views
0
#!/usr/bin/env stack 
{- stack --install-ghc --resolver lts-8.8 runghc 
-} 
import System.IO 
import System.Process 

main = createProcess (proc "ls" []) 

雖然stdout被哈斯克爾視爲一個tty,如hIsTerminalDevice stdout返回True時保留顏色,ls不承認它是這樣了,不輸出色彩。如何編寫到stdout

有沒有辦法規避這個問題,還是顯然不可能在Haskell中使用顏色輸出工作?

編輯:很清楚,我不想只是ls工作,但是當他們將stdout識別爲tty時,支持顏色輸出的所有Unix工具都可以工作。

+0

'ls'默認不會產生顏色輸出。如果你的'ls'支持,使用'「ls」[「--color = auto」]。 – Ryan

+0

不能那樣做。我正在實現一個shell,我不選擇用戶將鍵入的內容。但是,在'bash'中輸入'ls',你會看到默認的顏色。 –

+0

@SebastienGuimmara嘗試輸入'which ls'。它可能是一個在bash的配置文件中設置的別名。 – sepp2k

回答

5

答案是哈斯克爾沒有錯,我混淆了我自己的ls,它的別名爲ls --color=tty