Знайдіть місце, де PS1
встановлено ваше, .bashrc
і вставте '\[\e[1m\]'
на початку та \[\e[0m\]
в кінці.
\[
і \]
вони необхідні, щоб оболонка знала, що безлад всередині займає 0 місця на екрані, що запобігає певній поведінці під час редагування рядків. Вам не потрібно надто турбуватися про це.
\e[
відомий як CSI (введення контрольної послідовності). Ви побачите, що він використовується в більшості кодів, перелічених на посилається на сторінці Вікіпедії. \e
означає персонаж втечі.
- Якщо ви заглянете в таблицю SGR на сторінці Вікіпедії, ви побачите, що 1 - це номер яскравого / жирного тексту, а 0 - для скидання. Таким чином,
CSI 1m
увімкнено жирним шрифтом та CSI 0m
скидає шрифт, щоб решта тексту була нормальною.
У Вікіпедії є повний перелік анімаційних кодів ANSI, які ви можете використовувати, якщо ваш емулятор термінала підтримує його.
Редагувати
Для портативності та читабельності вам слід використовувати tput
замість жорстких кодів аварійних кодів. Єдиним недоліком є те, що tput
підхід не працюватиме з терміналами, які підтримують ANSI-коди, але мають зламані або відсутні бази даних terminfo, але в цьому випадку зламаний термінфо є більшою проблемою, оскільки багато ваших додатків консолі, які покладаються на terminfo, можуть не працювати належним чином.
Ось приклад того, що я роблю в своєму .bashrc
:
# color names for readibility
reset=$(tput sgr0)
bold=$(tput bold)
black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
user_color=$green
[ "$UID" -eq 0 ] && { user_color=$red; }
PS1="\[$reset\][\[$cyan\]\A\[$reset\]]\[$user_color\]\u@\h(\l)\
\[$white\]:\[$blue\]\W\[$reset\][\[$yellow\]\$?\[$reset\]]\[$white\]\
\\$\[$reset\] "
Ось як виглядатиме узагальнена версія моєї версії. Стан 0
виходу останньої команди.