最近,命令行工具趋向于在其日志输出中使用奇特的ANSI颜色(例如,NPM和许多基于nodejs的工具,rvm,docker和一些其他“现代”工具)。
这使您可以在屏幕(*)上进行阅读,但如果要将输出通过管道传输到日志文件或通过不能很好地处理ANSI的传输方式(例如各种远程执行工具和基于Web的监视解决方案),就不太好了。许多更成熟的工具至少能够检测出何时输出的不是TTY并禁用颜色,但是不能使用那些新的“用户友好” CLI-这使我无法通过管道操作来摆脱ANSI颜色。通过另一个过程输出。
对输出进行遍历s/\x1B\[[0-9]*\w//g
似乎可以完成工作,但是有没有一种更干净的方法,然后将粘贴正则表达式复制到我的所有脚本中?
(*),直到工具尝试在深色背景终端上以深红色显示错误为止。
2
请参阅:unix.stackexchange.com/questions/14684/... - unix.stackexchange.com/questions/111899/... stackoverflow.com/questions/17998978/... superuser.com/questions/380772/... - 4+之间的问题了在3个站点的3年时间里,我们仅获得使用正则表达式替换/删除工具的答案。我猜没有比这更好的了。
—
Zoredache
唯一值得讨论的是哪种正则表达式最适合哪种情况。
—
Zoredache
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?
-将清理过滤器保存到名为“ /usr/local/bin/stripttycolor.sh”的文件中?这样,您就可以将正则表达式限制在单个位置吗?
如果您知道将输出写入文件,最简单的操作(至少对于NPM)是使用
—
Moshe Katz
--no-color
标志运行。许多其他命令也具有类似的标志。
@MosheKatz:不幸的是,例如,并非所有命令都可以
—
格斯,2015年
bower
。