Как очистить форматирование PS1 в gnome-терминале?

Я настроил 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\]$ '

И это означает, что при выполнении чего-то вроде этого:

enter image description here

Выходные данные выглядят так, хотя первая строка должна быть белой и белой, пока я не сделал команду, набранную также зеленым:

enter image description here

Так как я могу сделать так, чтобы цвет выходного текста не зависел от того факта, что я установил зеленый цвет команды? Я использую Ubuntu GNOME 15.04 с GNOME 3.16.

Обновление информации:

Я заметил, что при запуске sudo rkhunter --nocolor --update вывод все зеленый.

4
задан 15 October 2015 в 17:13

1 ответ

Проблема состоит в том, что Вы устанавливаете команду, чтобы быть в зеленом, но не закрываете цветной управляющий код. Поэтому все последующие строки, включая вывод любых команд, которые не имеют их собственного форматирования примененным, отображают тем цветом. Как обходное решение (источник), Вы могли trap печать близкого кода к сигналу ОТЛАДКИ. Добавьте эту строку к Вашему ~/bashrc

trap 'printf "\e[0m" "$_"' DEBUG

Это распечатает \e[0m (который закроет открытый цветовой код). Поскольку это trapплетеная корзинка к DEBUG сигнал, это будет выполняться перед любой командой Вы работаете. Так, между ударом Входят и команда, на самом деле работающая. Как объяснено в man bash:

Если sigspec является ОТЛАДКОЙ, аргумент команды выполняется, прежде чем каждая простая команда, для команды, команды случая, выберет команду, каждую арифметику для команды, и прежде чем первая команда выполнится в функции оболочки (см. ГРАММАТИКУ SHELL выше).

8
ответ дан 16 October 2015 в 03:13

Другие вопросы по тегам:

Похожие вопросы: