Farbe in der Konsole: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
K (intern Verlinkt)
K (Bearbeitungsvermerke entfernt)
Zeile 118: Zeile 118:
 
==== Farbiger Errorlevel im Prompt ====
 
==== Farbiger Errorlevel im Prompt ====
  
Errorlevel in rot anzeigen ''(Danke an reini123)''
+
Errorlevel in rot anzeigen  
 
 
 
Folgenden Code in der aktuellen Bash ausführen oder für dauerhaften Gebrauch in der ~/.bashrc ablegen
 
Folgenden Code in der aktuellen Bash ausführen oder für dauerhaften Gebrauch in der ~/.bashrc ablegen
 
<pre>
 
<pre>
Zeile 161: Zeile 160:
 
=== Syntax Highlighting im [[Text editieren mit vi|vi]] ===
 
=== Syntax Highlighting im [[Text editieren mit vi|vi]] ===
  
Der [[Texteditor vi]] auf der Konsole, der in keinem LINUX/UNIX fehlt, ist in den modernen Linuxsystemen auf einen wesentlich leistungsfähigeren Nachfolger [http://www.vim.org/ '''vim'''] oder einen Klon davon, gelinkt. Dieser Editor kann unter Anderem auch '''Syntax Highlighting"''' für eine Vielzahl von Dateitypen.
+
Der [[Text editieren mit vi|Texteditor vi]] auf der Konsole, der in keinem LINUX/UNIX fehlt, ist in den modernen Linuxsystemen auf einen wesentlich leistungsfähigeren Nachfolger [http://www.vim.org/ '''vim'''] oder einen Klon davon, gelinkt. Dieser Editor kann unter Anderem auch '''Syntax Highlighting"''' für eine Vielzahl von Dateitypen.
  
 
Im Verzeichnis ''/usr/share/vim/current/syntax/'' stehen die Syntaxkonfigurationsfiles. Anhand der Endung (prefix) der zu editierenden Datei erkennt vim welche Syntax für diesen Dateitype zu benutzen ist. Selbstverständlich kann man auch seine eigenen Syntax-Konfigurationsfiles entwerfen und einsetzen und auch die Farben anpassen. Siehe dazu http://vimdoc.sourceforge.net/htmldoc/usr_44.html
 
Im Verzeichnis ''/usr/share/vim/current/syntax/'' stehen die Syntaxkonfigurationsfiles. Anhand der Endung (prefix) der zu editierenden Datei erkennt vim welche Syntax für diesen Dateitype zu benutzen ist. Selbstverständlich kann man auch seine eigenen Syntax-Konfigurationsfiles entwerfen und einsetzen und auch die Farben anpassen. Siehe dazu http://vimdoc.sourceforge.net/htmldoc/usr_44.html
Zeile 189: Zeile 188:
  
  
 
<!-- überarbeitet und zusammengefasst von robi 01.09.2006-->
 
 
<!-- Orginal http://www.linux-club.de/viewtopic.php?t=15252-->
 
<!-- Orginal http://www.linux-club.de/viewtopic.php?t=15252-->
  
  
 
[[Category:Konsole]]
 
[[Category:Konsole]]

Version vom 31. Dezember 2006, 10:24 Uhr

Farbe in der Konsole

Vorbemerkung 

hin und wieder möchte man auch auf einem Textterminal etwas Hervorheben oder farbig markieren. Das das so etwas geht, hat wohl jeder schon einmal erlebt, nachdem er zB mc gestartet hat oder bei der Ausgabe von ls sich über die bunten Dateinamen gewundert hat.

  • Auf einem Textterminal ist eine farbige Anzeige mittels ANSII Escape Sequence möglich
  • Nicht alle Terminaleinstellungen unterstützen dieses
  • Welchen Terminaltype man derzeit benutzen, ist in der TERM Variable hinterlegt. echo $TERM
  • Eine Übersicht welche TERM Einstellungen farbige Ausgaben unterstützen finden wir in der Datei /etc/DIR_COLORS


Die ANSII Escape Sequence für farbige Darstellung

das Prinzip der Escape Sequence für farbige Ausgabe 

ist folgendes Format \033[BC;TA;TCm

dabei gilt im Einzelnen

  • Eröffnung der Sequence ist immer \033[ oder etwas abgkürzt \e[
  • BC der Code für die Hintergrundfarbe
Dieser Code muss nicht zwingend angegeben werden
Hintergrund color codes
40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
  • TA der Code für ein Textattribut
Text Attribute codes
00=keine 01=fett 04=unterstrichen 05=blinken 07=reverse 08=unsichtbar
  • TC der Code für die Textfarbe
Text color codes
30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • die einzelnen Codes werden mit Semikolon ohne zusätzliche Leerzeichen getrennt
  • den Abschluss bildet ein m


in Verbindung mit dem Text Attribut 00 oder 01 ergeben sich folgende Textfarben

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37


Beispiel für farbige Ausgaben

echo -e "\033[46;1;31m TESTAUSGABE \033[43;4;34m KUNTER \033[45;1;32m BUNT \033[44;1;33m ANGESTRICHEN \033[0m"

Am Ende sollte möglichst immer \033[0m anbinden, damit die nachfolgende Ausgabe dann wieder "normal" ist.


Script um eine Farbübersicht zu erhalten

Eine Übersicht welche Farben wie auf welcher Hintergrundfarbe wirkt, kann man mit diesem kleinem Script hier erzeugen [Fundort]

#!/bin/bash
#
#   This file echoes a bunch of color codes to the 
#   terminal to demonstrate what's available.  Each 
#   line is the color code of one forground color,
#   out of 17 (default + 16 escapes), followed by a 
#   test use of that color on all nine background 
#   colors (default + 8 escapes).
#

T='gYw'   # The test text

echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m";

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
           '  36m' '1;36m' '  37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG  $T  "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
  done
  echo;
done
echo


Anwendung im Shell Prompt

farbiges Prompt

Die Shellvariable PS1 steuert das Verhalten des Prompts. Du kannst folgendes in deine .bashrc (in deinem Homeverzeichnis) schreiben:

if test \( "$TERM" = "xterm" -o "${TERM#screen}" != "$TERM" \) -a -z "$EMACS"
then
        export PS1="\[\033[31m\]\[\e]2;\u@\h:\w\007\e]1;\h\007\]\u@\h:\w> \[\033[0m\]"
else
        export PS1="\[\033[31m\]\u@\h:\w> \[\033[0m\]"
fi

Dann die Datei neu einlesen oder eine neue Bash eröffnen damit die Änderung wirkt
es genügt .bashrc im Homeverzeichnis abzusetzen

Danach solltest du einen roten Prompt haben.


Farbiger Errorlevel im Prompt

Errorlevel in rot anzeigen Folgenden Code in der aktuellen Bash ausführen oder für dauerhaften Gebrauch in der ~/.bashrc ablegen

PROMPT_COMMAND='LASTERROR="[$?]" ; test "$LASTERROR" = "[0]" || echo -ne "\033[93;41m${LASTERROR}\033[0m"'
export PROMPT_COMMAND 

Jetzt wird der Rückgabe Wert eines Befehles oder Scriptes insofern er nicht 0 ist, innerhalb des folgenden Prompt farbig angezeigt, das kann sehr hilfreich sein, z. B. für das Schreiben und Testen von Befehlsketten oder Scripte.

Links zum Thema Prompt

Anwendungen innerhalb des ls Befehles

Der ls Befehl kann Dateientypen an Dateiattributen und Prefixen erkenne und farbig darstellen.


Siehe dazu auch man ls
Verantwortlich für das Einschalten dieser Funktion ist die Option --color

Zuordnung der Farben zu den Dateitypen

Die Zuordnung der Farben zu den Dateitypen wird global für alle in der /etc/DIR_COLORS vorgenommen. Jedem User sollte es aber möglich sein diese Datei in sein Homeverzeichnis unter dem Namen .dir_colors zu kopieren, dann kann er seinen Bedürfnissen und Vorlieben entsprechend, selbst seine persönlichen Einstellungen durch änderen dieser Datei vornehmen.

cp /etc/DIR_COLORS ~/.dir_colors

Danach einfach die bash neu starten, damit die Änderungen wirken.

Mehr Infos mit man DIR_COLORS

Links zum Thema ls und Color


Syntax Highlighting im vi

Der Texteditor vi auf der Konsole, der in keinem LINUX/UNIX fehlt, ist in den modernen Linuxsystemen auf einen wesentlich leistungsfähigeren Nachfolger vim oder einen Klon davon, gelinkt. Dieser Editor kann unter Anderem auch Syntax Highlighting" für eine Vielzahl von Dateitypen.

Im Verzeichnis /usr/share/vim/current/syntax/ stehen die Syntaxkonfigurationsfiles. Anhand der Endung (prefix) der zu editierenden Datei erkennt vim welche Syntax für diesen Dateitype zu benutzen ist. Selbstverständlich kann man auch seine eigenen Syntax-Konfigurationsfiles entwerfen und einsetzen und auch die Farben anpassen. Siehe dazu http://vimdoc.sourceforge.net/htmldoc/usr_44.html


Ein- Ausschalten des Syntax highlighting im vim

permanet durch Eintrag in der Vim-Konfigurationsdatei ~/.vimrc 

anlegen der Datei bzw. erweitern dieser Datei und folgenden Eintrag vornehmen

syntax on
bei Bedarf durch Zeilenoption beim Start von vi 
# vi +"syn on" file.prefix
bei Bedarf während der Sitzung im Kommandomodus 

hier kann während der Sitzung dieser Modus nach Belieben Ein- und Ausgeschaltet werden

:syntax on

Analog Ausschalten

:syntax off