gpt4 book ai didi

perl - bash 彩色文本和管道

转载 作者:行者123 更新时间:2023-11-29 09:18:39 26 4
gpt4 key购买 nike

我有一个 Perl 脚本,可以在 bash 下输出一些彩色文本。例如,这将输出一个红色字符串:

perl -e 'print "\e[1;31m RED \e[m"

当我将它通过管道传输到另一个程序时,例如vim ... | vim - ,我可以看到格式化杂乱字符的颜色:

^[[1;31m RED ^[[m

我希望它们被跳过。例如,对于 grep,您会在 bash 中看到颜色,但在重定向输出时会跳过它们。

怎么做?

最佳答案

如果您使用 Term::ANSIColor为了生成转义序列,您可以设置 ANSI_COLORS_DISABLED禁用转义序列生成的环境变量)。

您可以使用 -t 文件测试来确定输出是否为 tty(或 detect if your script is being run interactively)。

然后,在输出任何序列之前,在 Perl 脚本中设置环境变量。

类似于:

use IO::Interactive;

BEGIN { is_interactive() or $ENV{ANSI_COLORS_DISABLED} = 1 }

应该这样做。

关于perl - bash 彩色文本和管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7822767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com