Как заставить скрипт оболочки osx показывать цвета в эхо

Матрица функций фабрики Bean vs Application Context получена из весенних документов

Снимок экрана с функциями BeanFacotry и ApplicationContext

29
задан nycynik 28 February 2015 в 13:44
поделиться

4 ответа

OSX поставляется со старой версией Bash, которая не поддерживает escape-символ \e. Используйте \x1B или обновите Bash (brew install bash).

Еще лучше, тем не менее, было бы использовать tput.

31
ответ дан danemacmillan 28 February 2015 в 13:44
поделиться

Используйте \033 или \x1B вместо \e для представления символа <Esc>.

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

См. http://misc.flogisoft.com/bash/tip_colors_and_formatting

.
61
ответ дан guapolo 28 February 2015 в 13:44
поделиться

В файлах сценариев printf может быть еще один вариант, хотя вы должны добавить трейлинг "\n".

#!/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.'

Проверено на 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 28 February 2015 в 13:44
поделиться

Другим вариантом может быть использование zsh, которое учитывает нотацию \e.

#!/bin/zsh
3
ответ дан Adam Matan 28 February 2015 в 13:44
поделиться