Настройте цвета шрифта терминала Bash

Недавно я задал этот вопрос, о том, как настроить цвета шрифта терминала удара. На вопрос ответили, и я получил желание цветов, с помощью ссылки, предоставленной услужливым пользователем.

Команда, которую я искал, была:

export PS1="\e[1;34m\u@\H : \e[m\[$(tput sgr0)\]"

Который дает мне следующее в требуемом цвете:

user@host :

Однако после использования этого некоторое время, я замечаю, что мой терминал удара теперь довольно ошибочен при записи и доступе к истории команд. Этот поток описывает точную проблему, которую я имею, и решение быть, "использовать \[...\] вокруг частей PS1, которые имеют длину 0 дюймов.

Я чувствую, что попробовал все, чтобы сделать точно, что в моем PS1, но история все еще остается багги. Кто-то может указать на то, что я пропускаю?

0
задан 1 May 2017 в 14:31

1 ответ

Эти части PS1 имеют длину 0, потому что они устанавливают форматирование (использующий escape-последовательности ANSI), но не производят никакой другой вывод:

\e[1;34m
\e[m
$(tput sgr0)

Также:

  • Можно вынуть $(tput sgr0) потому что \e[m делает ту же самую вещь.
  • Поместите PS1 в одинарные кавычки, так, чтобы переменные и команды в нем были динамическими, не статичными. (Хотя это не важно в этой ситуации.)

Таким образом, Вы ищете эту команду:

export PS1='\[\e[1;34m\]\u@\H : \[\e[m\]'
1
ответ дан 3 November 2019 в 07:59

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

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