Не точно глотая, но можно удалить их с расширением параметра:
str='Hello \e[31mc\e[32mo\e[33ml\e[34mo\e[35mr\e[m world'
# colorful output
echo -e "$str"
# colorless output
echo -e "${str//\\e\[+([0-9;])m}"
Вышеупомянутое в bash
требует extglob
опция оболочки, которая будет включена. (shopt -s extglob
)
Чтобы помочь использовать, определите функцию:
function ecco() { [ -t 1 ] && echo -e "$1" || echo -e "${1//\\e\[+([0-9;])m}"; }
Затем Вы просто называете его:
ecco 'Hello \e[31mc\e[32mo\e[33ml\e[34mo\e[35mr\e[m world'
Чтобы проверить, что это работает, просто перенаправьте его вывод, и цвета исчезнут:
ecco 'Hello \e[31mc\e[32mo\e[33ml\e[34mo\e[35mr\e[m world' | cat
Я нашел ответ, но я не могу объяснить «почему», поскольку он не имеет никакого смысла и / или я не понимаю документацию. Я все еще собираюсь опубликовать его как ответ, поэтому, если у кого-то еще есть та же проблема, у него будет еще одна вещь, чтобы попробовать на его «попробовать и ошибку».
Документация: http://www.syslinux.org/wiki/index.php/syslinux#append_-
Снятие iPappend 2
С конца
Файл в метке установки CentOS фактически решил проблему.
Я могу воспроизвести ошибку, добавляя обратно IPAppend 2
делает его перестать работать снова.