it-swarm.com.de

Wie bekomme ich osx Shell-Skript, um Farben in Echo anzuzeigen

Ich versuche, meinen Fehlern in einem Bash-Skript, das auf einem Mac ausgeführt wird, eine Farbausgabe hinzuzufügen. Das Problem ist, dass die Farben nicht funktionieren. Ich habe das einfachste Skript erstellt, um zu demonstrieren, dass es nicht funktioniert:

#!/bin/bash

echo -e "\e[1;31m This is red text \e[0m"

Wenn ich es jedoch laufen lasse, sehe ich überhaupt keine Farben, wie in diesem Bild gezeigt. Die Farbausgabe des Befehls ls funktioniert jedoch einwandfrei.

enter image description here

33
nycynik

OSX wird mit einer alten Version von Bash ausgeliefert, die das Escapezeichen \e Nicht unterstützt. Verwenden Sie \x1B Oder aktualisieren Sie Bash (brew install bash).

Noch besser wäre es jedoch, tput zu verwenden.

33
danemacmillan

Verwenden \033 oder \x1B Anstatt von \e zu vertreten de <Esc> Zeichen.

echo -e "\033[1;31m This is red text \033[0m"

Siehe http://misc.flogisoft.com/bash/tip_colors_and_formatting

66
guapolo

Eine andere Option könnte die Verwendung von zsh sein, bei der die Notation \e Beachtet wird.

#!/bin/zsh
4
Adam Matan

In Skriptdateien könnte printf noch eine weitere Option sein, Sie müssen jedoch ein abschließendes "\n" Hinzufügen.

#!/bin/bash

echo -e "\e[31mOutput as is.\e[m"
printf "\e[32mThis is green line.\e[m\n"
printf "\e[33;1m%s\n" 'This is yellow bold line.'

Getestet unter macOS High Sierra 10.13.6:

% /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-Apple-darwin17)
Copyright (C) 2007 Free Software Foundation, Inc.
3
cu39