写入标准输出时如何保留颜色
How to preserve color when writing to stdout
#!/usr/bin/env stack
{- stack --install-ghc --resolver lts-8.8 runghc
-}
import System.IO
import System.Process
main = createProcess (proc "ls" [])
虽然 stdout
被 Haskell 认为是一个 tty,因为 hIsTerminalDevice stdout
returns True
,ls
不承认它如此,并且不输出颜色。
有没有办法绕过这个问题,或者在 Haskell 中显然不可能获得彩色输出?
编辑:明确地说,我不希望 ls
工作,而是在将 stdout
识别为 tty 时支持颜色输出的整个 Unix 工具范围。
答案是 Haskell 没有错,我混淆了我自己的 ls
,别名为 ls --color=tty
。
#!/usr/bin/env stack
{- stack --install-ghc --resolver lts-8.8 runghc
-}
import System.IO
import System.Process
main = createProcess (proc "ls" [])
虽然 stdout
被 Haskell 认为是一个 tty,因为 hIsTerminalDevice stdout
returns True
,ls
不承认它如此,并且不输出颜色。
有没有办法绕过这个问题,或者在 Haskell 中显然不可能获得彩色输出?
编辑:明确地说,我不希望 ls
工作,而是在将 stdout
识别为 tty 时支持颜色输出的整个 Unix 工具范围。
答案是 Haskell 没有错,我混淆了我自己的 ls
,别名为 ls --color=tty
。