GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Farbausgabe des unter BASH ausgeführten Programms

Die meisten Terminals respektieren die ASCII-Farbsequenzen. Sie funktionieren, indem sie ESC ausgeben , gefolgt von [ , dann eine durch Semikolons getrennte Liste von Farbwerten, dann m . Dies sind allgemeine Werte:

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

Also "\033[31;47m" ausgeben sollte die vordere (Text-) Farbe des Terminals rot und die Hintergrundfarbe weiß machen.

Sie können es schön in ein C++-Formular packen:

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";
}

Hier ist eine Version des obigen Codes von @nightcracker mit stringstream statt itoa . (Dies läuft mit clang++, C++11, OS X 10.7, iTerm2, bash)

#include <iostream>
#include <string>
#include <sstream>

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

static std::string set_color(Color foreground = NONE, Color background = NONE)
{
    std::stringstream s;
    s << "\033[";
    if (!foreground && ! background){
        s << "0"; // reset colors if no params
    }
    if (foreground) {
        s << 29 + foreground;
        if (background) s << ";";
    }
    if (background) {
        s << 39 + background;
    }
    s << "m";
    return s.str();
}

int main(int agrc, char* argv[])
{
    std::cout << "These words should be colored [ " <<
        set_color(RED) << "red " <<
        set_color(GREEN) << "green " <<
        set_color(BLUE) << "blue" <<
        set_color() <<  " ]" << 
        std::endl;
    return EXIT_SUCCESS;
}

Vielleicht möchten Sie sich die VT100-Steuercodes ansehen.


Linux
  1. Führen Sie den Prozess mit Echtzeitausgabe in PHP aus

  2. Verwendung der Ausgabe vorheriger Befehle in Bash

  3. Führen Sie ein Java-Programm im Backend aus

  4. Führen Sie das Bash-Skript als Daemon aus

  5. Führen Sie den Bash-Befehl auf der Jenkins-Pipeline aus

Bash:In Datei schreiben

So führen Sie Linux-Befehle im Hintergrund aus

So führen Sie ein Bash-Skript aus

Virtualisierungslösungen unter Openbsd?

Geniale Möglichkeiten zum Ausführen eines Programms unter Linux

Wie man ein C-Programm unter Linux schreibt und ausführt