Farbige Shell
-
Ich bin in letzter Zeit häufiger gefragt worden wie die farbige Shell unter linux funktioniert. Darum möchte ich dies einmal für alle die es nicht wissen erklären.
Und die die es wissen brauchen jetzt nicht gleich zu motzen es gibt bestimmt einige die das interessiert:
Ich habe im FAQ nachgeschaut dazu steht noch nichts drin man könnte diesen Beitrag deshalb darin aufnehmen.
Die farbige Shell unter linux wird mit sogenannten Ansi-Sequenzen erzeugt.
Sie haben die folgende Form: \033[x;ym Hierbei steht x für die Farbe: z.B \033[31;1m für rot, fett Und y für den Zustand: z.B. \033[33;5m für gelb, blinkend
Hierbei stehen folgende x werte für folgende Farben:
schwarz = 30 rot = 31 gruen = 32 gelb = 33 blau = 34 violett = 35 cyan = 36 weis = 37
PS: Nimmt man statt einer dreisiger Zahl eine vierziger Zahl
bezieht sich das ganze auf den Hintergrund der ShellFolgende y Werte stehen für folgende Zustände
fett = 1 unterstrichen = 4 blinkend = 5 invertiert = 7 versteckt = 8
Und jetzt nochmal zum merken
- Ansi-Sequenzen beginnen immer mit \033[
- Der x Wert steht dann für die Farbe
- X und Y Wert trennt ein ;
- Der y Wert steht für den Zustand
- Das ende der Ansi-Sequenz ist immer ein m
- alles was nach diesen Ansi-Sequenzen in der Shell steht wird entsprechend konvertiert
- Mit \033[0m wird der normal Zustand und die normal Farbe wiederhergestellt
Wenn jemand noch mehr zum Thema weiß schreibt nur.
Ich bin sicher das dies einige interessiert.
-
nur zur info: du kannst auch damit positionieren
void pos (int cursor_x, int cursor_y){ printf ("\33[%d;%dH", cursor_x, cursor_y); }
wirst aber verschoben werden, weil sich c++ standard für sowas nicht interessiert
-
Richtig positionieren kann man auch noch
Ich hab dazu auch gleich mal was aus einem HOWTO geklaut.
Ich weiß aber vom Autor das er nichts dagegen hat also...- Cursorposition: \033[<Z>;<S>H oder \033[<Z>;<S>f positioniert den Cursor in Zeile Z und Spalte S - Cursor N Zeilen hoch: \033[<N>A - Cursor N Zeilen runter: \033[<N>B - Cursor N Spalten nach rechts: \033[<N>C - Cursor N Spalten nach links: \033[<N>D - Schirm leeren und Cursor auf (0,0): \033[2J - Alles von aktueller Position bis Zeilenende entfernen \033[K - Cursorposition speichern: \033[s - Cursorposition wiederherstellen: \033[u
Das dürfte wieder weitergeholfen haben, wenn jemand noch mehr weiß nur her damit
PS: Soll ja verschoben werden am besten in den FAQ das mans immer nachlesen kann
-
Schau mal in der Konsolen-FAQ unter "Escapesequenzen"
MfG SideWinder
-
Na gut du hast recht
Aber zu meiner verteidugung das ist zwar dasselbe aber auf win32 gemünzt und schwer zu finden, bei der masse an Beiträgen die dieses Forum besitzt.
Außerdem doppelt gemoppelt hält besser
Aber du hast natürlich recht ich schau nächstes mal besser hin bevor ich schreibe
-
SideWinder schrieb:
Schau mal in der Konsolen-FAQ unter "Escapesequenzen"
MfG SideWinderna ja, vielleicht will er es in der linux faq auch nochmal haben.
ein gutes ansinnen, da ja ansis unter linux meist wunderbar funktionieren.
nicht alles dreht sich um die win32 konsole *g
so long
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Danach wird eigentlich nie gefragt, insofern eindeutig keine FAQ, sorry.
Wenn Du einen Beitrag von Dir in den FAQ sehen möchtest, dann beantworte eine Frage kompetent, die wirklich öfter gestellt wird, dann schiebe ich den Thread gerne da rein.