Wie kann ich Ausgang verschiedene Schattierungen von Grün an das Terminal?
-
26-09-2019 - |
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 erreichenLö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:
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.