Ruby中shell命令的颜色输出

Bre*_*ham 3 ruby unix scripting

这是一个简单的Ruby脚本:

puts `ls -laG`
Run Code Online (Sandbox Code Playgroud)

在OS X的ls中,-G用于颜色.

在bash下运行时,我得到颜色输出.当从Ruby脚本运行上述内容时,我在结果输出中看不到颜色或ANSI转义序列.

从我读过的,我的猜测是因为脚本没有像tty一样运行.有没有办法运行命令,好像它是在真正的tty会话下运行 - 或类似的东西?

Joh*_*n M 7

查看OS X中的ls手册页,我看到了一些提到的环境变量.CLICOLOR启用颜色(如-G)和CLICOLOR_FORCE(强制颜色甚至非终端输出).

所以我想你会得到你想要的......

puts `env CLICOLOR=1 CLICOLOR_FORCE=1 ls -la`
Run Code Online (Sandbox Code Playgroud)

您可以在.profile中设置环境变量.在我的示例中,我只是使用env命令来确保它们在命令行上设置.我没有使用-G选项,因为CLICOLOR做了相同的操作.