
Я настроил gnome-terminal
пользовательские .bashrc
цвета:
PS1='${debian_chroot:+($debian_chroot)}\[\033[00;37m\][\[\033[00;32m\]\t\[\033[00;37m\]] \[\033[01;34m\]\u\[\033[00;37m\]@\[\033[01;34m\]\h\[\033[00;37m\]:\[\033[01;34m\]\w\[\033[01;32m\]$ '
А это значит, что при выполнении чего-то вроде этого:
Вывод выглядит следующим образом, хотя первая строка должна быть белой и была белой, пока я не сделал вводимую команду также зеленой:
Итак, как мне сделать так, чтобы цвет выходного текста не зависел от того, что я установил зеленый цвет команды? Я использую Ubuntu GNOME 15.04 с GNOME 3.16.
Обновление информации:
Я заметил, что при запуске sudo rkhunter --nocolor --update
все выходные данные зеленые.
решение1
Проблема в том, что вы устанавливаете команду в зеленый цвет, но не закрываете цветовой escape-код. Поэтому все последующие строки, включая вывод любых команд, к которым не применено собственное форматирование, отображаются в этом цвете. Как обходной путь (источник), вы могли бы trap
распечатать код закрытия сигнала DEBUG. Добавьте эту строку в свой~/bashrc
trap 'printf "\e[0m" "$_"' DEBUG
Это напечатает \e[0m
(что закроет открытый цветовой код). Поскольку он trap
привязан к DEBUG
сигналу, он будет выполнен до любой команды, которую вы запустите. Итак, между нажатием Enterи фактическим выполнением команды. Как объяснено в man bash
:
Если sigspec имеет значение DEBUG, команда arg выполняется перед каждой простой командой, командой for, командой case, командой select, каждой арифметической командой for и перед выполнением первой команды в функции оболочки (см. ГРАММАТИКУ ОБОЛОЧКИ выше).