echo Einfärben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
MoonKid
Beiträge: 513
Registriert: 12.03.2012 22:36:43

echo Einfärben

Beitrag von MoonKid » 06.01.2013 18:01:06

Unter Cygwin konnte ich mit

Code: Alles auswählen

echo "\e[31mwrong parameters\e[0m"
die Ausgabe entsprechend einfärben.

Unter ner richtigen bash (Kubuntu 12.10) geht das aber nicht. Dort werden die Steuercodes einfach als Zeichen ausgegeben.

MoonKid
Beiträge: 513
Registriert: 12.03.2012 22:36:43

Re: echo Einfärben

Beitrag von MoonKid » 06.01.2013 18:06:07

Die Option "-e" fehlt.

Cygwin scheint die nicht zu benötigen, die Linux-bash schon.
Evtl. gab es da bei Cygwin einen globalen bereits gesetzt Schalter?

Benutzeravatar
Meillo
Moderator
Beiträge: 9261
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: echo Einfärben

Beitrag von Meillo » 06.01.2013 18:36:42

Diese Verwendung von echo(1) ist unportabel. POSIX definiert den Aufruf von echo als:
echo [string...]
Und zu den String-Argumenten steht:
A string to be written to standard output. If the first operand is -n, or if any of the operands contain a <backslash> character, the results are implementation-defined.
http://pubs.opengroup.org/onlinepubs/96 ... /echo.html

Du solltest printf(1) (mit angefuegtem Newline!) verwenden. Zudem solltest du die `\e' durch `\33' ersetzen. Eine POSIX-kompatible Version sieht so aus:

Code: Alles auswählen

printf "\33[31mwrong parameters\33[0m\n"
Use ed once in a while!

Antworten