Измените цвет определенной буквы в имени пользователя в PS1 bash

У меня 14.04 и я использую virtualbox.

В моей системе gcc-version возвращает

gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4

Он поступает из репозитория надежных обновлений, как показано здесь

[ f2]

После подтверждения того, что у вас есть эта версия компилятора, вам необходимо удалить и переустановить последнюю версию ядра, используя эти команды (выбитые из отчета об ошибке)

sudo apt-get purge linux-headers-4.4.0-116 linux-headers-4.4.0-116-generic linux-image-4.4.0-116-generic linux-image-extra-4.4.0-116-generic linux-signed-image-4.4.0-116-generic

sudo apt-get install linux-generic linux-signed-generic

и перезагрузитесь в новое ядро.

Наконец, вам нужно перестроить драйвер ядра vbox теперь, когда у вас есть правильный ядро ​​и правый компилятор

sudo /sbin/vboxconfig 

Там могут быть другие версии компилятора, которые работают, но это один из них доказал свою работоспособность.

9
задан 14 March 2018 в 17:11

3 ответа

Если вы не возражаете против использования escape-кода \u, вы можете сделать это следующим образом:

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

Это установит приглашение только для имени пользователя и пробела. Первый символ имени пользователя будет красным. Это работает, расширяя переменную $USER дважды с определенным диапазоном. Первый раз диапазон составляет от 0 до 1. Второй раз это от 1 (второй символ) до конца.

Чтобы получить приглашение, как вы просили, используйте это:

[ f2]
13
ответ дан 22 May 2018 в 12:34
  • 1
    Вы можете просто опустить length , чтобы напечатать всю строку, начинающуюся с offset : ${USER:1} для всего имени пользователя, кроме первого символа. Хорошее решение! Можете ли вы также показать, как изменить цвет третьего символа, как запрошено OP? – dessert 14 March 2018 в 17:05
  • 2
    Можно проверить такие вещи, как echo -e, например. [F2] – dessert 14 March 2018 в 17:09
  • 3
    Должно ли это работать с различными различными именами пользователей (например, выделить 3-е письмо для всех)? Если это просто для вас, более простой подход - просто скопировать буквы вашего имени пользователя, например. ra вместо ${USER:0:2} и т. д. – egmont 15 March 2018 в 00:51
  • 4
    Жесткое кодирование @egmont почти никогда не является лучшим способом, но, по общему признанию, намного проще. Таким образом, вы можете удалить код в глобальном файле конфигурации или поделиться им с другими. И он обрабатывает случай, когда ваша учетная запись переименована. – Sebastian Stark 15 March 2018 в 00:55
  • 5
    Лично я делюсь своей конфигурацией оболочки между тремя разными именами. Но, может быть, мы не должны входить в философию здесь :) – Sebastian Stark 15 March 2018 в 01:04

Если вы не возражаете против использования escape-кода \u, вы можете сделать это следующим образом:

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

Это установит приглашение только для имени пользователя и пробела. Первый символ имени пользователя будет красным. Это работает, расширяя переменную $USER дважды с определенным диапазоном. Первый раз диапазон составляет от 0 до 1. Второй раз это от 1 (второй символ) до конца.

Чтобы получить приглашение, как вы просили, используйте это:

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "
13
ответ дан 17 July 2018 в 18:50

Если вы не возражаете против использования escape-кода \u, вы можете сделать это следующим образом:

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

Это установит приглашение только для имени пользователя и пробела. Первый символ имени пользователя будет красным. Это работает, расширяя переменную $USER дважды с определенным диапазоном. Первый раз диапазон составляет от 0 до 1. Второй раз это от 1 (второй символ) до конца.

Чтобы получить приглашение, как вы просили, используйте это:

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "
13
ответ дан 23 July 2018 в 19:39

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

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