Лучше использовать тот, tput
который будет обрабатывать escape-символы в зависимости от возможностей вывода / терминала. (Если терминал не может интерпретировать \e[*
цветовые коды, он будет «загрязнен», что затруднит чтение выходных данных. (Или иногда, если вы grep
выводите такой вывод, вы увидите его \e[*
в результатах)
Смотрите этот урок дляtput
.
Ты можешь написать :
blue=$( tput setaf 4 ) ;
normal=$( tput sgr0 ) ;
echo "hello ${blue}blue world${normal}" ;
Вот учебник для печати цветных часов в терминале.
Также обратите внимание, что tput
при перенаправлении STDOUT в файл все еще может быть напечатан управляющий символ:
$ myColoredScript.sh > output.log ;
# Problem: output.log will contain things like "^[(B^[[m"
Чтобы этого не случилось, настройте tput
переменные, как предложено в этом решении .