从内部删除bash脚本的颜色并重定向ouptut

问题描述 投票:0回答:1

我的问题很简单,如何将bash脚本的所有输出重定向到文件和终端删除颜色字符从内部脚本本身?

我找不到适合我所有需求的答案。

到目前为止,我尝试将tee输出到文件和终端,并与2>&1结合使用以获得stederrstdoutsed除去颜色字符,而所有这些操作都与exec一起从在我的脚本中,但是它不起作用,我只能在终端中获取彩色日志,而文件中没有任何内容。

#!/usr/bin/env bash
exec 2>&1 | sed -r 's/\x1b\[[0-9;]*m//g' | tee script.logs

python somepython.py
python someotherpython.py

这里python脚本产生带颜色的输出。

我想将它们记录到终端(未修改)和文件中(不显示颜色)。实际上,我的bash脚本中发生的事情比仅两个python脚本要多得多,这就是为什么我要全局重定向脚本bash的输出,而不仅仅是在每个python脚本之后进行管道传输。]

因此,我使用了exec,因为尽管它允许重定向脚本的所有输出。

感谢您提供任何建议和帮助,

PS:我不想在文件中添加彩色日志,但是不管终端是否需要在文件中不添加彩色日志,我不在乎终端。

我的问题很简单,如何将bash脚本的所有输出重定向到文件和终端,并从脚本本身中删除颜色字符?我找不到适合我所有需求的答案。 ...

bash stdout stderr
1个回答
2
投票

您可以将您的所有呼叫放在一个花括号组中,然后重新分配全部呼叫,例如:

© www.soinside.com 2019 - 2024. All rights reserved.