Skriva färgad text med echo?

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Skriva färgad text med echo?

Inlägg av Emil.s »

För närvarande ser min bash-prompt ut så här:

Kod: Markera allt

if [ ! `whoami` = root ]; then
	PS1="\[\033[1;32m\]\u@\H\[\033[31m\]:\[\033[34m\] \w\[\033[m\]\[\033[33m\] $>\[\033[37m\] "
else
	PS1="\[\033[31m\]\u@\H\[\033[1;32m\]:\[\033[34m\] \w\[\033[m\]\[\033[33m\] #>\[\033[37m\] "
fi
Färgglatt och trevligt. :)
Men om jag vill skriva ut lite färgad text med echo, hur gör man då?
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Skriva färgad text med echo?

Inlägg av Konservburk »

Du kan använda printf:

Kod: Markera allt

printf '\033[34m hejsan \033[m\n'
Vill du använda echo så blir det olika beroende på vilken version av echo det gäller. Med echo i bash så använder du flaggan -e, men det är inte säkert att den funkar överallt. Du kan även byta ut \033 mot ^[ där ^[ är ett enda tecken som fås genom att trycka ctrl-v+escape i xterm (ctrl-q+escape i emacs). Då funkar det även utan -e med echo.
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Skriva färgad text med echo?

Inlägg av David Andersson »

I PS1 och printf kan vi även skriva \e i stället för \033.
Exempel:

Kod: Markera allt

printf '\e[34m hejsan \e[m\n'
Här finns en lista med färgkoder.
http://graphcomp.com/info/specs/ansi_col.html#colors
Det går att kombinera, t.ex:

Kod: Markera allt

printf '\e[1;4;44m hejsan \e[m\n'
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Skriva färgad text med echo?

Inlägg av Konservburk »

David Andersson skrev:I PS1 och printf kan vi även skriva \e i stället för \033.
Det beror på vilken version av printf det handlar om. I bash så klarar den inbyggda printf av \e, men det är inte alla versioner av printf som gör det.
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Skriva färgad text med echo?

Inlägg av David Andersson »

Konservburk skrev:
David Andersson skrev:I PS1 och printf kan vi även skriva \e i stället för \033.
Det beror på vilken version av printf det handlar om. I bash så klarar den inbyggda printf av \e, men det är inte alla versioner av printf som gör det.
Ja, det har du rätt i. Tänkte inte på det.

Med t.ex min /usr/bin/printf (ver 5.97) funkar \e inte:

Kod: Markera allt

/usr/bin/printf '\e[34m hejsan \e[m\n'
men \033 funkar

Kod: Markera allt

/usr/bin/printf '\033[34m hejsan \033[m\n'
Skriv svar

Återgå till "Terminalforum"