当前位置: 首页 > 面试题库 >

在BASH下运行的程序的颜色输出

田硕
2023-03-14
问题内容

我需要能够使终端上的某些文本更引人注目,并且我认为是使文本变为彩色。实际的文本,或者每个字母的矩形中的空格(想想vi的光标)。我认为对我的应用程序很重要的两个额外规范是:该程序应与发行版无关(可以确定的是,该代码仅在BASH下运行),并且在写入文件时不应输出额外的字符。 (根据实际代码或管道输出时)

我在网上搜索了一些信息,但是我只能找到不推荐使用的cstdlib(stdlib.h)的信息,我需要(实际上,更多是“想要”)使用iostream的功能来完成此操作。


问题答案:

大多数终端都遵循ASCII颜色序列。它们的工作方式是输出ESC,然后输出,[然后是分号分隔的颜色值列表,然后是m。这些是常见的值:

Special
0  Reset all attributes
1  Bright
2  Dim
4  Underscore   
5  Blink
7  Reverse
8  Hidden

Foreground colors
30  Black
31  Red
32  Green
33  Yellow
34  Blue
35  Magenta
36  Cyan
37  White

Background colors
40  Black
41  Red
42  Green
43  Yellow
44  Blue
45  Magenta
46  Cyan
47  White

因此,输出"\033[31;47m"应使终端正面(文本)颜色为红色,背景颜色为白色。

您可以将其很好地包装为C ++形式:

enum Color {
    NONE = 0,
    BLACK, RED, GREEN,
    YELLOW, BLUE, MAGENTA,
    CYAN, WHITE
}

std::string set_color(Color foreground = 0, Color background = 0) {
    char num_s[3];
    std::string s = "\033[";

    if (!foreground && ! background) s += "0"; // reset colors if no params

    if (foreground) {
        itoa(29 + foreground, num_s, 10);
        s += num_s;

        if (background) s += ";";
    }

    if (background) {
        itoa(39 + background, num_s, 10);
        s += num_s;
    }

    return s + "m";
}


 类似资料:
  • 我的Java 8小程序连接到一个SQL数据库,并在一个中显示“SELECT”语句的结果,该语句包含两列: 如果第1/columna行中的字符串与第0/columna行中的字符串不相同,我希望给第1行一个灰色背景色(以标记“新”数据的开始),其他行应该使用默认的白色。 创建表的代码: 获取数据并填充表: 根据我到目前为止的发现,我必须使用一个自定义的来代替我在开始时设置的但是我该如何使用它呢?我发现

  • 问题内容: 我使用命令:运行docker图像,但它不显示颜色输出。如果我还是再次运行,则输出将正确地以彩色输出。 重击提示图像 我的bash_profile和bash_prompt 问题答案: 该OP SolomonT报道称,有做的工作: 和费尔南多·科雷亚增加的评论: 为了同时获得色彩支持和工作,我结合了两个示例: 正如chepner所评论(较早的回答)那样,由于是由调用的,因此是来源(属于交互

  • 我试图从使用apache POI创建的Excel文件中的给定和复制字体和颜色。后者起作用,但是设置颜色不起作用:虽然我在Excel中的字体在使用直接设置时是绿色的,但是使用创建不起作用(请参见下面的代码)。如何获得(最接近的),或者更好地使用POI字体中的原始值? 当前代码段:

  • 我有一个多栏的列表视图。。。要更改选定或单击的行项目的背景色。参考了关于stackoverflow的各种文章,但它们似乎没有帮助。。。我在McClick做的是。挫折背景色。当应用程序重新启动时,无法使用选择器,因为我希望记住我已更改颜色的行的颜色更改。。。我把标志值放在数据库中,可以在getView中设置颜色,但是第一次怎么做呢?这是代码。。。。。 我现在所做的是在getView方法中,将转换视图

  • 问题内容: 嗨,我正在开发一个需要我运行一些bash代码的应用程序,有没有一种方法可以将脚本硬编码到我的应用程序中然后运行它?例如(这是一个非常简化的示例) 我有以下方法来运行一行bash命令,但需要在多行中运行类似的内容。同样,上面的代码是一个非常简化的示例,我实际上在执行的操作必须通过脚本运行,而不能通过Java完成。我也想对它进行硬编码,因为我知道可以将脚本存储在手机上并使用以下命令运行它,

  • 我创建了一个暗/亮主题切换器,我发现的问题是当我在输入域输入任何信息时,当网站在暗模式下时,输入域内的文本显示为黑色,我如何改变它,在亮模式下保持黑色文本颜色,在暗模式下保持白色文本颜色。 这是我的CSS为光明/黑暗模式。如何为黑暗模式添加不同的文本颜色? 我试图用这段代码,但它在黑暗和光明模式下都发生了变化。 编辑:我从下面的回答中添加内容。它现在工作只有一个问题,当我改变到光模式时,输入文本颜