我在执行一条命令,命令本身在屏幕输出的时候是有高亮的颜色的,我用 tee
来一边输出到屏幕,一边写日志:
ansible -m ping localhost| tee -a ret.log
但这样指令在屏幕上输出的原本的颜色被 tee
完全忽略了,全变成了黑底白字了,用 tee
的时候咋在屏幕保留高亮的色呢?看了下 --help
也没找到 colour
相关的东西, PS: 最好不要再安装其他工具了
1
css3 OP 解决了:
unbuffer ansible -m ping localhost| tee -a ret.log 美中不足的是,这样日志里边也加了一些颜色的符号这种 ^[[0;32 ^[[0m |
2
FragmentLs 2021-04-29 19:31:49 +08:00
可以加 sed 去掉 ascii 颜色码,不过读取日志才 escape 掉 ascii 码更香
|
3
CatCode 2021-04-29 20:23:21 +08:00
似乎不是 tee 的问题 而是前面的那个命令的程序 在检测到输出不是 stdout 而是一个管道的时候,就会自动忽略掉颜色
很多 gnu coreutils 也有类似的设计 |
4
CNife 2021-04-29 20:35:55 +08:00
这个确实不能两全其美。或许可以写个 ctee 程序( colored tee ),假装自己是个终端,让程序输出带有颜色代码的内容,自己一方面直接把有颜色代码的内容写到终端上,另一方面去掉颜色代码写入指定的文件。
|