Знайдіть місце, де 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виходу останньої команди.
