Змініть колір певної літери в імені користувача у PS1 bash


9

Я хочу змінити колір конкретної літери в моєму імені користувача, яке відображатиметься PS1 в bash.

Наприклад: Якщо \uє rahul, я хотів би, щоб лист hбув синього кольору, а решта була білою.

Я знаю , що \uвідноситься до імені користувача та додавання кольору до цілої «сутності» робляться шляхом додавання тегів , як: [\033[38;5;15m\].

Якщо це можливо, я можу, будь ласка, знати, як це зробити.

Відповіді:


13

Якщо ви не заперечуєте проти використання \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} "

1
Ви можете просто опустити довжину, щоб надрукувати весь рядок, починаючи зі зміщення : ${USER:1}для цілого імені користувача, крім першого символу. Приємне рішення! Чи можете ви також показати, як змінити колір третього символу, як вимагає ОП?
десерт

1
Можна перевірити , що такі речі , як з echo -e, наприкладecho -e "${USER:0:2}\e[0;34m${USER:2:1}\e[m${USER:3} "
десерт

2
Чи має це працювати з різними іменами користувачів (наприклад, виділити третю букву для всіх)? Якщо це лише для вас, більш простий підхід - це просто ввести коди з літер свого імені користувача, наприклад, raзамість ${USER:0:2}тощо.
egmont,

Жорстке кодування @egmont майже ніколи не є найкращим способом, але, правда, набагато простішим. Таким чином ви можете скинути код у глобальний конфігураційний файл або поділитися ним з іншими. І він обробляє випадок, коли ваш рахунок перейменований.
Себастьян Старк

1
Особисто я поділяю власну конфігурацію оболонки між трьома різними іменами. Але, можливо, нам тут не варто вникати у філософію :)
Себастьян Старк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.