ubuntuusers.de

Farbe im Shell-Script ändern

Status: Gelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

schwarzes_Ubuntu_Schaaf

Avatar von schwarzes_Ubuntu_Schaaf

Anmeldungsdatum:
25. Dezember 2009

Beiträge: Zähle...

Wohnort: bei Ravensburg

Hi Leute,

ich schreibe gerade ein Script für die Bash und versuche ein echo farblich auszugeben. Wie kann ich die Vorder- bzw. Hintergrundfarbe ändern?

Ich habe hier schon viele Suchergebnisse bekommen zwecks ändern der Farbe in der Konsole gefunden aber irgendwie klappen die nicht oder sind nicht für die Bash.

Danke im Voraus

mfg schwarzes Ubuntu Schaaf

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

Ok, die Syntax is'n bischen kniffelig.

1
2
3
4
# escape sequence character as ascii code
echo -e "\\033[01;33m\e[46mYour string here in yellow on cyan...\\033[;0m"
# escape sequence character as bash buildin
echo -e "\e[01;33m\e[46mYour string here in yellow on cyan...\e[;0m"

Prinzipiell sieht das von der Syntax her so aus

escape-sequence (ascii \\033 or bash \e) [ attribute (00-01, 04-05, 07-08); text-color (30-37) escape-sequence [ background-color (40-47) ACTUAL STRING escape-sequence [ text-reset

Etwas mehr Informationen zu den Codes findet man auch in den Kommentaren der Ausgabe von

dircolors -p

Da steht dann u.a.

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

schwarzes_Ubuntu_Schaaf

(Themenstarter)
Avatar von schwarzes_Ubuntu_Schaaf

Anmeldungsdatum:
25. Dezember 2009

Beiträge: 31

Wohnort: bei Ravensburg

Danke dauerflucher =) Du hast mir sehr geholfen

danke für die schnelle antwort

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Schääfchen,

wenn Du es komplett wissen willst: http://en.wikipedia.org/wiki/ANSI_escape_code
Die allermeisten Codes davon funktionieren in den üblichen Terminals, viel mehr als unter DOS.

Und praktisch schreibe ich es auch normalerweise so:

echo -e "schreibe \e[1;33;41m gelb auf rotem Grund \e[0m und wieder normal.

(man beachte den Parameter "-e" beim echo !)

LG,

track

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2510

... davon abgesehen, bietet sich tput an.

1
$ echo "$(tput setaf 1)Hallo, in rot und $(tput setab 2)auf grünem Hintergrund. Und Reset:$(tput sgr0) Wieder normal."

man terminfo ist eine lange Liste an Optionen, was man da noch mit machen kann. ☺ tput sucht sich die passenden Escape-Sequenzen aus der Terminfo-Datenbank selbst raus, damit man sich das nich merken muss. Es versteht auch nicht jedes Terminal alle Codes, das fängst du damit gleich mit ab.

Antworten |