【问题标题】:GNU parallel - keep output coloredGNU并行 - 保持输出颜色
【发布时间】:2016-03-20 11:54:49
【问题描述】:

我正在并行化一些具有彩色输出的 0-args 命令(脚本/其他),但是当并行打印输出时它是无色的(除非我使用 -u 选项,但它是无序的)。

有办法改变吗?

我正在使用的线(插图):

echo "script1 script2 script3" | tr " " "\n" | parallel -j3 'echo {}":\n\n"; eval {}'

顺便说一句,我使用的是本地版本的 GNU 并行,但它应该或多或少相同。

谢谢

【问题讨论】:

    标签: colors gnu-parallel


    【解决方案1】:

    原因是您的命令行工具检测到它们没有打印到终端(GNU Parallel 在将它们打印到终端之前会保存到临时文件中)。一些工具即使输出到文件也可以强制颜色:

    parallel 'echo {} | grep --color=always o' ::: joe
    

    您可以要求 GNU Parallel 为脚本提供 tty:

    parallel --tty -j+0 'echo {} | grep o' ::: joe
    

    --tty 默认为-j1,因此您必须明确覆盖它。它也有问题,GNU Parallel 不能杀死这些工作。这将运行 10 秒:

    parallel --tty --timeout 5 sleep ::: 10
    

    【讨论】:

    • 您的意思是脚本负责无色输出?即那里有一段明确的代码可以检测到文件的重定向并禁用颜色?否则它会变得丰富多彩?
    • @elad 是的。他们将测试输出是否为 tty。
    • 如何显示颜色和分组输出?我无法使用--tty--group 而不失色。
    • @NicolasBoisteault 我不认为你可以。 --group 将输出重定向到临时文件。如果您的程序测试输出是否被重定向到文件,因此拒绝输出颜色,我看不出有办法避免这种情况。您必须以某种方式使程序认为它正在输出到 tty。您也许可以使用script 欺骗您的程序。如果你找到一个通用的解决方案,我很想知道:也许 --tty 可以用它来扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 2020-10-29
    • 2018-10-27
    • 2017-01-07
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多