2011-09-02 30 views
3

有没有办法导出命令输出的颜色?转发bash颜色

让我们用一个小例子解释一下:

ls -alh --color=auto 

将打印目录的有色内容,而

ls -alh --color=auto | cat 

将不打印一些色彩。我想知道是恶作剧还是一个工具,让我们把它magic的,可以恢复这些命令一样\033[1m,使颜色可供后期处理:

ls -alh --color=auto | magic | cat 

ls -alh --color=auto | magic >> file 

更新:
我使用ls只是为了这个例子,但想知道是否有一般的可能性。

+0

你确定要使用'| |猫'会删除当前shell会话中的颜色? – ajreal

回答

3
script outputfile command 

会做的伎俩。例如:

script capture.txt ls --color=always 
+0

嘿,非常感谢,解决了我的问题;-) – binfalse

2

由于颜色代码实际上是ls输出的一部分,因此无法“恢复”它们(因为它们不在第一位)。

但是,如果使用ls --color=always,则即使在非交互模式下使用时,ls也会输出颜色代码。

+0

不幸的是'ls'只是一个例子:-( – binfalse

+0

@binfalse所有具有颜色输出和交互模式检测的工具都应该有一个类似的参数 –

2

基本上,ls正在智能化,并检测输出何时不会到达终端。如果您想告诉它更少,请尝试ls --color=always

使用颜色区分文件类型在默认情况下和--color=never均被禁用。使用--color=auto时,只有当标准输出连接到终端时,l才会发出颜色代码。 LS_COLORS环境变量可以更改设置。使用dircolors命令进行设置。