linux - 带有重定向输出的 Perl 颜色说明符

标签 linux perl bash

我有一个使用 Term::ANSIColor 的 Perl 脚本。过去的情况是,如果我将输出重定向到文件 > file.txt,那么该文件只包含文本,而不包含颜色代码 ^[[0m

我的机器 Ubuntu 10.04 发生了一些变化,这样重定向的输出包括这些指定颜色的特殊字符。

知道如何解决这个问题吗?我可以从 perl 脚本内部检测输出重定向并跳过颜色部分吗?

谢谢!

最佳答案

您可以使用 IO::Interactive 测试您是否在交互式运行包裹:

use IO::Interactive qw(is_interactive);

if (is_interactive())
{
    # show some fancy color
}

使用 IO::Interactive(而不是仅仅测试 STDIN 是否是一个带有 -t 运算符的 tty)背后的基本原理是广泛的 explained by Damian Conway .

关于linux - 带有重定向输出的 Perl 颜色说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9216431/

相关文章:

php - 如何在 Laravel 5 Blade 模板中通过 "use"使用自定义类?

linux - linux下perl的基本聊天系统

Perl 死于 : "Usage: DBD::Pg::db::DESTROY(dbh) during global destruction"

python - 从 HTML 表中提取数据

bash - "Standardized"bash 脚本的文档字符串/ self 文档

arrays - 如何使用 BASH 将 tar 命令中的文件读取到数组中?

json - 使用 jq 将 JSON 转换为 CSV

linux - yocto/bitbake 构建尝试将文件更改为 root 并失败

linux - 安装 iPod 时显示奇怪的 URI 字符串

regex - 在匹配字符串之前在变量上包含正则表达式