我正在并行化一些具有彩色输出的 0-args 命令(脚本/其他),但是当并行打印输出时,它是无色的(除非我使用 -u
选项,但它是无序的)。
有办法改变吗?
我正在使用的线路(插图):
echo "script1 script2 script3" | tr " " "\n" | parallel -j3 'echo {}":\n\n"; eval {}'
顺便说一句,我正在使用 GNU 并行的本地版本,但它应该或多或少相同。
谢谢
最佳答案
原因是您的命令行工具检测到它们没有打印到终端(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
关于colors - GNU 并行 - 保持输出彩色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34276565/