Sida 1 av 1

Skriva färgad text med echo?

Postat: 24 apr 2008, 21:07
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å?

Re: Skriva färgad text med echo?

Postat: 24 apr 2008, 21:21
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.

Re: Skriva färgad text med echo?

Postat: 24 maj 2008, 00:16
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'

Re: Skriva färgad text med echo?

Postat: 24 maj 2008, 00:22
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.

Re: Skriva färgad text med echo?

Postat: 28 maj 2008, 02:43
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'