награвся і повернувся до стандартного, — не зовсім, але майже:
- додав номер команди в історії;
- додав кольорове кодування запрошення для root'а;
- додав кольорове кодування залежно від коду завершення попередньої команди;
- додав індикатор кількості фонових процесів.
export PS1='\[\e[2;37m\]\! \[\e[1;32m\]\u@\H\[\e[0m\] \w $(if [[ $? != 0 ]]; then echo "\[\e[31m\]"; fi)$([ \j -gt 0 ] && echo "\[\e[2;37m\][\j]\[\e[0m\] ")\$\[\e[0m\] '
виглядає трохи складно. але якщо врахувати, що всі фрагменти «
\[\e[2;37m\]»
— то лише кодування кольорів тексту, залишається основа, яка теж працюватиме:export PS1='\! \u@\H \w $(if [[ $? != 0 ]]; then echo "(Error)"; fi)$([ \j -gt 0 ] && echo "[\j] ")\$ '
її нескладно розібрати на елементи:
\!
— номер команди в історії (див. history);\u
— ім'я користувача;\H
— ім'я машини (повністю);\w
— поточна директорія (повністю);$(if [[ $? != 0 ]]; then echo "(Error)"; fi)
— перевірка коду завершення ($?
) попередньої команди;$([ \j -gt 0 ] && echo "[\j] ")
— перевірка (так, в bash можна без if), чи є фонові процеси (\j
);\$
— запрошення ($, або ж # для root'а)
деякі питання й відповіді:
де перевірка root чи не root?
немає. root використовує свій .bashrc, тому йдемо в його профіль (
su root
) і прописуємо все те саме йому в PS1, лише міняємо колір частини \u@\H (або лише \u, кому як більше до вподоби).навіщо номери команд?
для зручності:
!!
в баш перезапускає останню команду, !<номер>
ще раз запускає команду з певним номером, history 10
покаже десять останніх команд з номерами.звісно, найпростіше тиснути стрілки вгору (ctrl+p) та вниз (ctrl+n), якщо потрібно знайти щось дуже неглибоко в історії — гадаю, більшість початківців так і роблять (особливо ті, хто в термінал зазирає лише раз на рік, коли щось поламається).
стоп! а де котики?!
простенький варіант з котиком, котрий посміхається або хмуриться залежно від результату виконання попередньої команди:
PS1='$(if [[ $? == 0 ]]; then echo "\[\e[32m\]😺"; else echo "\[\e[31m\]🙀"; fi)\[\e[0m\] \u@\H \w $ '
проблема в тому, що символ котика в деяких шрифтах може мати нестандартну ширину, це трохи збиває bash з пантелику.
що з цим робити?!
це стосується лише linux та командної оболонки bash. відкрити текстовим редактором (nano, micro, geany, gedit тощо) файл .bashrc:
nano ~/.bashrc
та додати останнім рядком:
export PS1='\[\e[2;37m\]\! \[\e[1;32m\]\u@\H\[\e[0m\] \w $(if [[ $? != 0 ]]; then echo "\[\e[31m\]"; fi)$([ \j -gt 0 ] && echo "\[\e[2;37m\][\j]\[\e[0m\] ")\$\[\e[0m\] '
після цього перезавантажити .bashrc:
source ~/.bashrc
все, має працювати, і навіть після перезавантаження.
я поліз в .bashrc і поламав своє запрошення!
просто в терміналі, не зважаючи на кракозябли, друкуємо (див. вище пояснення елементів):
export PS1='\u@\H:\w\$ '
і маємо мінімалістичний промпт — тоді гуглимо і навчаємося робити аварійні копії важливих файлів перед редагуванням =)
ти що, збоченець? хто у 21 столітті користується цими командами?
так. велика, величезна кількість збоченців користується.