【发布时间】:2017-06-03 23:47:50
【问题描述】:
我的 bash 脚本上有一个复杂的命令,它会在标准输出上打印很多信息。此命令很复杂,需要一些时间才能完成,但可以正常工作。同时,我正在使用带有 tee 的管道将其写入文件以进行后解析任务。
cmd="myComplexCommand | tee /dev/fd/5"
exec 5>&1
stored_output=$(eval "${cmd}")
直到这里一切正常。
现在,我正在尝试实现 ccze 来为屏幕输出着色。通常在任何命令上使用它都很简单:
anyCommand | ccze -A
一切都以美丽的彩色方式印刷。问题是,如果我尝试将其应用于我的特定情况,在使用管道对 myComplexCommand 进行 ccze 之后,屏幕上的输出是彩色的(很好!)但它会改变存储在我想在我的帖子上解析的文件中的输出-parse 任务,它不起作用。
是否有一种 Bash 方法可以在屏幕上以一种美观的方式使用 ccze 打印命令,同时将其存储在文件中(无需 ccze 修改)以供以后解析?
【问题讨论】:
-
顺便说一句,在这里使用
eval是一种严重的代码异味。更好的做法是使用函数存储代码:cmd() { myComplexCommand | tee /dev/fd/5; },然后调用cmd。
标签: bash parsing stdout tee colorize