Frage

Ich verwende derzeit den folgenden Code zur Ausgabe von Text in grün auf den Terminal:

printf("%c[1;32mHello, world!\n", 27);

Allerdings möchte ich mehr Schattierungen von Grün. Was ist der einfachste Weg, um dies?

zu erreichen
War es hilfreich?

Lösung

Sie können das 256colors2.pl Skript auf Rob Meerman der Website, um sicherzustellen, dass Ihr Terminal Griffe 256 Farben richtig. Dann wählen Sie die richtige Kombination von RGB-Werten Sie die richtige Grünton zu geben.

Basierend auf seinem Skript, es sieht aus wie die Farbzahlen sind im Wesentlichen ein Versatz von einer Basis 6 Farbschema:

COLOR = r*6^2 + g*6 + b) + 16

Und für die Vordergrundfarbe müssen wir Gebrauch:

\x1b[38;5;${COLORNUM}m

Und wieder basierend auf seinem Skript, ist hier eine (Perl) Schleife, dass zeigt den Buchstaben O in der gewünschten Farbe:

# now the color values
for ($green = 0; $green < 6; $green++) {
    for ($red = 0; $red < 6; $red++) {
        for ($blue = 0; $blue < 6; $blue++) {
            $color = 16 + ($red * 36) + ($green * 6) + $blue;
            print "\\x1b[38;5;${color}m :\x1b[38;5;${color}m O\x1b[0m ";
            print "\n" if ($blue == 2 || $blue == 5);
        }
    }
    print "\n";
}

Und hier ist eine Probe seiner Ausgabe:

Screenshot zeigt Farbwert samples

Hinweis : Charles mehr ziemlich viel scheint darüber, wie tatsächlich funktioniert es und was Sie die die Shell tun müssen, um zu überprüfen, ob die erforderlichen Fähigkeiten unterstützt. Meine Informationen beruhen ausschließlich auf Beobachtung und Prüfung mit einer Schale bekannt 256 Farben zu unterstützen (konsole).

Andere Tipps

Wie Sie dabei vorgehen, hängt von Ihrem Terminal. Sie können eine termcap der Lage sein, die Abfrage sollten oder terminfo-Datenbank, um herauszufinden, wie.

Dies ist am einfachsten mit einigen tput Befehlen zu demonstrieren.

z. auf meinem aktuellen Terminal:

tput initc 2 500 900 100
tput setaf 2

2 Definiert Farbe eine Grünton sein (die Parameter sind RGB-Werte zwischen 0 und 1000), und schaltet den Vordergrund zu dieser Farbe.

die Zeichenfolge in einem C Programm für Ihre bestimmten Terminal benötigt Um zu sehen, können Sie die Fähigkeiten mit infocmp angezeigt werden soll.

z. (Für meinen Terminal)

$ infocmp -1 | grep initc
        initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
$ infocmp -1 | grep setaf
        setaf=\E[38;5;%p1%dm,

Die % Paramter Formatierung ist ein bisschen (OK sehr) schmerzhaft zu analysieren, sondern in der infocmp Manpage dokumentiert. Übersetzen dies printf Format-String ist nicht zu hart.

Dies kann Ihnen helfen:

http://en.wikipedia.org/wiki/ANSI_escape_code

Sie können nur erhalten wirklich zwei verschiedene Schattierungen von jeder Farbe. Versuchen Sie, die 1 mit einem 2 ersetzt dunkelgrün zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top