Heim  >  Artikel  >  Backend-Entwicklung  >  Vertiefte Kenntnisse der Shell-Ausgabefarbe und -steuerung

Vertiefte Kenntnisse der Shell-Ausgabefarbe und -steuerung

高洛峰
高洛峰Original
2017-02-07 17:24:351397Durchsuche

Vorwort

Jeder weiß, dass bei Verwendung des Befehls ls zum Auflisten von Dateien unterschiedliche Dateitypen in unterschiedlichen Farben angezeigt werden. Wie erreicht man also eine solche farbige Textausgabe? Die Antwort ist nicht kompliziert, egal ob Shell oder C-Sprache verwendet wird.

1. Implementierungsmethode unter Shell

Lassen Sie uns zunächst darüber sprechen, wie Sie es unter Shell implementieren. Dies kann mit dem Echo-Befehl erreicht werden. Siehe folgendes Beispiel:

echo -e "33[32mHello, world!"

Wenn Sie diesen Befehl in das Terminal eingeben, stellen Sie fest, dass das System „Hallo, Welt“ ausgibt. in grün?!“, wurde nicht nur das, sondern auch die darauffolgende Eingabeaufforderung grün? Mach dir keine Sorgen, hör mir einfach zu. Die Option -e des Befehls echo aktiviert die Interpretation des Backslash-Escape-Zeichens (ie) durch das Terminal. 33 in Anführungszeichen wird verwendet, um unkonventionelle Zeichenfolgen zu leiten. Die folgende Funktion besteht darin, die Vordergrundfarbe auf Grün zu setzen, der Buchstabe m stellt die festgelegte Attributkategorie dar und die Zahl stellt dar der Attributwert.

Einstellungen können individuell verwendet werden, zum Beispiel:

echo -e "33[0m"

Die Funktion dieser Befehlszeile besteht darin, die Attribute auf ihre Standardwerte zurückzusetzen, d. h Beispielsweise wird das 0m-Einstellungselement verwendet, um den Standardwert wiederherzustellen. Funktioniert jetzt auf Ihrem Terminal alles ordnungsgemäß?

Sobald Sie dies verstanden haben, ist der Rest einfach. Mit diesem Befehl können Sie neben der Festlegung der Vordergrundfarbe des Textes auch viele Eigenschaften festlegen.

Weitere Einstellungen sind unten aufgeführt:

33[0m 关闭所有属性
33[1m 设置高亮度
33[4m 下划线
33[5m 闪烁
33[7m 反显
33[8m 消隐
33[30m 至 33[37m 设置前景色
33[40m 至 33[47m 设置背景色
33[nA 光标上移n行
33[nB 光标下移n行
33[nC 光标右移n行
33[nD 光标左移n行
33[y;xH设置光标位置
33[2J 清屏
33[K 清除从光标到行尾的内容
33[s 保存光标位置
33[u 恢复光标位置
33[?25l 隐藏光标
33[?25h 显示光标

Die durch jede Zahl dargestellten Farben sind wie folgt:

Wörter Hintergrundfarbbereich: 40----49

40: Schwarz

41: Tiefrot

42: Grün

43: Gelb

44: Blau

45: Lila

46: Dunkelgrün

47: Weiß

Zeichenfarbe: 30-----------39

30: Schwarz

31: Rot

32: Grün

33: Gelb

34: Blau

35: Lila

36: Dunkelgrün

37: Weiß

Darüber hinaus können mehrere Einstellungselemente desselben Typs mit einem Semikolon in der Mitte kombiniert werden ( ;) getrennt.

lautet wie folgt:

echo -e "33[20;1H33[1;4;32mHello,world33[0m"

Diese Befehlszeile bewegt zuerst 33[20;1H den Cursor zur 20. Zeile und Spalte 1 des Terminals und dann 33[1; 4;32m Setzen Sie die Texteigenschaften auf hervorgehoben, unterstrichen und grün und geben Sie dann Hello, world; aus. Schließlich 33[0m stellen Sie die Terminaleigenschaften auf ihre Standardwerte wieder her, sodass Sie die Eingabeaufforderung nach dem nicht sehen Befehl ist abgeschlossen Es hat sich auch geändert.

Eine komplexe Steuerung der Terminalausgabe kann durch die Kombination der oben genannten Befehle erreicht werden.

2. Wie implementiert man es in der C-Programmierung?

Nachdem Sie die obige Implementierungsmethode in Shell verstanden haben, ist es sehr einfach, sie in C zu implementieren. Man kann sagen, dass Sie nur die printf-Funktion verwenden müssen, um das obige Echo -e zu ersetzen:

int color = 32;
 
printf("33[20;1H33[1;4;%dmHello, world.33[0m", color);

Dieses Beispiel ähnelt dem letzten Beispiel in Die obige Shell, außer dass hier der Farbwert übergeben wird Die variable Farbe wird angegeben (natürlich kann sie auch direkt angegeben werden).

3. Lenovo

Wenn Sie dies sehen, fragen Sie sich vielleicht, ob ähnliche Methoden zur Steuerung der Terminalausgabe in anderen Programmiersprachen verwendet werden können? Die Antwort ist ja! In Python kann die Ausgabe beispielsweise wie folgt aussehen:

color=32
 
print “33[20;1H33[1;4;%dHello, world.33[0m"%color

Der Effekt dieses Beispiels ist der gleiche wie im obigen C-Beispiel.

Zusammenfassung

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, der Inhalt dieses Artikels kann Ihnen beim Lernen oder Arbeiten helfen kann eine Nachricht hinterlassen, um zu kommunizieren.

Für ein tieferes Verständnis der Shell-Ausgabefarben- und Steuerungsartikel beachten Sie bitte die chinesische PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn