Знайшов в інтернеті кілька статей, вирішив зібрати в одній.
У більшості дистрибутивів запрошення командного рядка Bash за замовчуванням того ж кольору, що і вводяться команди і текст висновку цих команд. При інтенсивній роботі в консолі, коли вводиться безліч команд поспіль, буває важко відразу побачити, де закінчується висновок однієї команди і починається введення інший, особливо якщо висновок команд великий. На щастя, Bash дозволяє виділити запрошення кольором.
Спочатку трохи теорії.
\ U - спеціальний символ, що означає логін користувача (тут - denister)
\ H - спеціальний символ, що означає ім'я комп'ютера (хоста) (calculate)
\ W - спеціальний символ, що означає робочу директорію. (Як відомо, тильда (
) Позначає домашню директорію).
Символи @, $ означають самі себе.
А тепер подивимося значення PS1 по-замовчуванню в CLD 11.0 (у мене)
(Я розглядаю варіант звичайного користувача, який не рута.)
Як бачимо, тут вже присутній колір.
Так яким же чином відбувається завдання кольору символів і фону, а також перемикання різних режимів відображення терміналу в UNIX (і в безлічі інших ОС)? Так само, як і в легендарні часи телетайпних терміналів - посилкою на пристрій відображення керуючих команд у вигляді esc-послідовностей (esc скор. Від англ. Escape, вимовляється як ескейп).
Така послідовність складається з двох або більше символів, перший з яких буде esc (десятковий код дорівнює 27, восьмеричний - 033, шістнадцятковий - 0x1B). Розфарбовування проводиться внесенням певних змін до структури змінної PS1.
Щоб розфарбувати якусь частину запрошення, потрібно безпосередньо перед цією частиною підставити вираз \ [\ 033 [Хm \]. У разі жовтого кольору замість Х підставляємо 33; 1. Якщо підставити просто 33, то вийде цегельний колір; якщо 33; 4 то цегляний підкреслений; якщо 33; 5 то цегляний символ стане блимати; якщо 33,7 то буде чорний символ в цегляному квадратику.
До слова сказати, байдуже в якому порядку ставити значення навколо крапки з комою, так 33; 1 еквівалентно 1; 33.
Ось таблиця основних кольорів
Додавання до номера кольору через крапку з комою одиниці дає більш світлий відтінок:
Додавання до номера кольору через крапку з комою четвірки дає підкреслення.
Додавання до номера кольору через крапку з комою п'ятірки дає миготливий символ.
Додавання до номера кольору через крапку з комою сімки дає чорний символ на тлі відповідного кольору.
Якщо замість номерів 30-38 підставити номера 40-48, то фарбуватися в ті ж самі кольори будуть не символи, а фон навколо них:
Можна також складати більш складні комбінації кольорів фону і шрифту, наприклад
\ [\ 033 [01; 32; 42m \].
Змінити PS1 можна прямо з командного рядка, набравши наприклад
але тоді при виході з консолі всі кольори пропадуть.
Для того, щоб зробити різнобарвне запрошення постійним, потрібно створити в домашньому каталозі файл .bashrc і вписати в нього значення PS1 також як вводили в терміналі:
Хочу зауважити, що якщо ви зміните користувача, наприклад на рута, то всі кольори знову зміняться по-замовчуванню. Щоб розфарбувати запрошення BASH іншого користувача, потрібно створити такий же файлик .bashrc в домашній директорії цього користувача, наприклад /root/.bashrc і вписати в нього значення PS1.
Можна поміняти PS1 глобально в / etc / bash / bashrc, але я цього робити не раджу.
Ну а тепер найцікавіше!
# Використання різних кольорів:
\ T - виводить час
\ D - дату
# Показуємо повний шлях:
У цьому простому і зрозумілому прикладі видаються два рядки з даними. У першому рядку в зручному форматі зображується повний шлях, а в другій - тільки ім'я користувача.
\ N - перенесення рядка
# Зміна кольору в разі неправильного введення команди
Це звичайна командний рядок. Колір видається повідомлення зміниться в разі, якщо виникнуть проблеми з виконанням останньої команди. Одночасно видається шлях до поточного директорію і для зручності пошуку для кожної команди вказується її номер в списку історії команд bash.
# Видаємо веселу пику в разі, якщо виконання команди завершилося успішно
Ідея полягає в тому, що якщо ваша команда буде виконана успішно, то буде видаватися весела пика. А якщо команда завершиться невдало - буде видана сумна пика.
Ну і якщо хто ще знайде цікаві рішення - викладайте.
І звичайно - man bash розділ PROMPTING