2017-07-14 68 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