Начална » как да » Как да персонализирате (и оцветявате) Вашия Bash Prompt

    Как да персонализирате (и оцветявате) Вашия Bash Prompt

    Повечето Linux дистрибуции конфигурират Bash подсказката да изглежда нещо подобно потребителско име @ име на хост: директория $ . Но можете да конфигурирате Bash подканата да съдържа каквото ви харесва и дори да избирате какви цветове искате.

    Примерните стъпки тук бяха изпълнени на Ubuntu 16.04 LTS. Процесът трябва да бъде същият и при други дистрибуции на Linux, въпреки че подразбиращата се подсказка и настройките в .bashrc файла може да са малко по-различни.

    Къде се съхранява променливата за подкана

    Вашата Bash подсказка конфигурация се съхранява във вашия .bashrc на потребителския акаунт, който е на ~ / .Bashrc. Така че, ако потребителското ви име е bob, файлът е на /home/bob/.bashrc.

    Можете да отворите файла, за да видите текущата променлива Bash. Ние ще използваме nano като наш примерен текстов редактор, въпреки че можете да използвате и vi, emacs или всеки друг текстов редактор, с който сте доволни. Отворете терминал и стартирайте:

    nano ~ / .bashrc

    Превъртете надолу до PS1 = секция. Първата променлива изглежда доста сложна, защото включва информация за цвета - това ще обясним по-късно. Втората променлива, без информация за цвета, гласи, както следва:

    $ Debian_chroot: + ($ debian_chroot) \ ф @ \ ч \ т \ $

    Това все още е малко сложно поради $ Debian_chroot: + ($ debian_chroot) бита. Те просто казват на Bash да ви уведоми, ако използвате Debian chroot среда и обикновено няма да се показва. Пренебрегването им, тук е структурата по подразбиране на променливата за промяната на Bash:

    \ Ф @ \ ч: \ w \ $

    \ ф показва потребителското ви име, @ показва знака @, \ ч показва името на хоста (името на компютъра), : показва символа:, \ w показва работната директория и \ $ показва $, ако сте нормален потребителски акаунт или #, ако сте root. Така че, поставяйки всичко това заедно, получавате потребителско име @ име на хост: working_directory $.

    За да промените вашата Bash подкана, просто трябва да добавите, премахнете или пренаредите специалните символи в променливата PS1. Но има много повече променливи, които можете да използвате от тези по подразбиране.

    Оставете текстовия редактор за сега в nano, натиснете Ctrl + X, за да излезете. Ще ви покажем как да експериментирате с променливи, преди да напишете нов във вашия .bashrc файл.

    Как да създадете персонализиран Bash Prompt

    Вашата Bash подсказка конфигурация се съхранява в променливата PS1. За да запишете съдържанието на променливата PS1 в нова променлива, изпълнете следната команда:

    DEFAULT = $ PS1

    Сега можете да настроите променливата PS1 на различни стойности, за да експериментирате. Например, първият ред тук ще зададе вашето подкана на основна "потребителска $" подкана, а втората ще зададе подсказката ви на основен ред "потребител: работен_документ $".

    PS1 = "u: \ t

    Ако някога искате да се върнете към подразбиращия се ред, просто изпълнете следната команда.

    PS1 = $ DEFAULT

    Bash ще бъде възстановен в подразбиращия се ред, благодарение на факта, че сте запазили тези настройки по-рано. Имайте предвид, че всички промени, които правите тук, са само временни за текущата сесия Bash, така че винаги можете да излезете и да се регистрирате отново или да затворите и да отворите отново прозореца на терминала, за да се върнете към подразбиращия се ред. Но горната линия позволява лесно да се върнете към подразбиращата се Bash подкана без да се налага да излизате или да затваряте прозорец.

    Можете да добавите символи или текст към променливата. Така че, за да поставите подсказката по подразбиране с „Hello World“, можете да използвате:

    PS1 = "Здравей, свят u @ h: w"

    Сега, след като сте се спуснали, просто трябва да знаете какви са всички специални символи. Вероятно няма да ви е грижа за много от тях, но тук е пълният списък, както се вижда в ръководството за Bash:

    • Знак за звънец: \ а
    • Датата във формат „Дата на седмицата от седмицата“ (напр., „26 май“, вторник):
    • Форматът се предава на strftime (3) и резултатът се вмъква в низът за подсказване; празният формат води до локално-специфично времево представяне. Необходими са скобите: \ D формат
    • Символ за бягство: \ д
    • Името на хоста до първото „.“: \ ч
    • Името на хоста: \ Н
    • Броят на заданията, които понастоящем се управляват от черупката: \ й
    • Базовото име на терминалното име на обвивката: \ л
    • Нова линия: \ Н
    • Връщане на каретата: \ R
    • Името на обвивката, базовото име от $ 0 (частта след последната наклонена черта):
    • Времето в 24-часовия формат HH: MM: SS: \T
    • Времето в 12-часовия формат HH: MM: SS: \T
    • Времето в 12-часов формат: \ @
    • Времето в 24-часов HH: MM формат: \ A
    • Потребителското име на текущия потребител: \ ф
    • Версията на Bash (напр. 2.00): \ о
    • Издаването на Bash, версия + patchlevel (напр. 2.00.0): \ V
    • Текущата работна директория с $ HOME съкратена с тилда (използва променливата $ PROMPT_DIRTRIM): \ w
    • Базовото име на $ PWD, с $ HOME съкратено с тилда: \ W
    • Номерът на историята на тази команда: \!
    • Командният номер на тази команда: \ #
    • Ако ефективният UID е 0, #, в противен случай $: \ $
    • Знака, чийто ASCII код е осмичната стойност nnn: \ NNN
    • Наклонена черта: \\
    • Започнете поредица от непечатани знаци. Това може да се използва за вграждане на последователност за управление на терминала в подканата: \ [
    • Приключване на поредица от непечатани знаци: \]

    Така че, ако искате да добавите датата и часа към вашата Bash подкана и да поставите работната директория на команда на втора линия, можете да използвате следната конструкция:

    PS1 = "[d] u @ h \ t

    Тук квадратните скоби изобщо не са необходими, но помагат визуално да се счупят и да направят линията по-лесна за четене. Както вече споменахме по-рано, можете да добавите текст или нормални знаци към променливата, която желаете, така че не се колебайте да използвате каквото и да е за вас.

    Има още един мощен трик, за който трябва да знаете: Можете да добавите изхода на всяка команда към подканата. Когато се появи поканата, Bash ще изпълни командата и ще попълни текущата информация. За да направите това, просто включете всяка команда, която искате да изпълните между две " знаци. Това не е апостроф - това е сериозният акцент, който се появява над клавиша Tab на клавиатурата.

    Например, да кажем, че искате да видите версията на ядрото на Linux в реда. Можете да използвате ред като следния:

    U @ h на 'uname -s -r' \ t

    Като друг пример, да речем, че искате да видите средната продължителност на работа на системата и натоварването, както е показано от непрекъсната работа команда. Можете да използвате следната конструкция, която поставя ъптайм на своя линия преди останалата част от подканата.

    PS1 = "(" ъптайм ") \ t

    Чувствайте се свободни да експериментирате с различни специални знаци и команди, за да съберете идеалния команден ред.

    Как да добавите цветове към вашия Bash Prompt

    След като сте разбрали предпочитания от вас ред, можете да добавите цветове към него. Това всъщност е много просто, но прави променливата да изглежда ужасно объркана и сложна, ако не разбирате какво търсите.

    Например променливата по подразбиране за цветна проба от по-рано е:

    $ Debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32метра \] \ ф @ \ ч \ [\ 033 [00 м \] \ [\ 033 [01, тридесет и четири милиона метър \] \ т \ [\ 033 [00 м \] \ $

    Или отново премахнете бита debian_chroot:

    \ [\ 033 [01; 32м \] \ ф @ \ ч \ [\ 033 [00 м \] \ [\ 033 [01, 34 метра \] \ т \ [\ 033 [00 м \] \ $

    Това всъщност е просто \ Ф @ \ ч: \ w $ променлива от по-ранна, но с информация за цвета. Наистина, можем да го разделим на няколко раздела:

    \ [\ 033 [01, тридесет и две m \]\ Ф @ \ ч \ [\ 033 [00 м \]: \ [\ 033 [01, тридесет и четири милиона m \]\ w \ [\ 033 [00 м \]\ $

    Първата част е \ Ф @ \ ч бит, предшестван от цветна информация, която я превръща в зелена. Вторият е : символа, предшестван от цветна информация, която премахва всяко оцветяване. Третият е \ w бит, предшестван от цветна информация, която я превръща в синьо. Четвъртият е \ $ бит, предшестван от цветна информация, която премахва всички цветове.

    След като разберете как да създадете свои собствени цветни маркери, можете да добавите каквито и цветове да харесвате в каквито и да са раздели от вашата Bash подкана, която искате.

    Ето какво трябва да знаете: Трябва да включите цялата информация за цветовия код между \ [  и характерс. Вътре в етикета трябва да започнете с един от тях \ 033 [ или \ Д [ за да укажете на Bash, че това е цветна информация. И двете \ 033 [ и \ Д [ направете същото. \ Д [ е по-кратък, така че може да бъде по-удобен за използване, но ще използваме \ 033 [ тук, тъй като съответства на това, което се използва по подразбиране. В края на маркера трябва да завършите с м \ за обозначаване на края на цветен маркер.

    Разрушавайки това, ето как ще изглежда всеки цветен маркер. Единствената разлика е информацията, която добавяте на мястото на COLOR, за да определите действителния цвят:

    \ [\ 033 [ЦВЯТт \]

    Bash ви позволява да промените цвета на текста на преден план, да добавите атрибути като „bold“ или „underline“ в текста и да зададете цвят на фона.

    Ето стойностите за текста на преден план:

    • Черно: 30
    • Синьо: 34
    • Циан: 36
    • Зелено: 32
    • Лилаво: 35
    • Червено: 31
    • Бяло: 37
    • Жълто: 33

    Например, тъй като лилавият текст е цветен код 32, бихте го използвали \ [\ 033 [32т \]  за лилав текст.

    Можете също да укажете атрибут за текста. Този атрибут трябва да бъде добавен преди номера на цвета, разделен с точка и запетая (;). Текст с тези атрибути ще изглежда различно в различните терминални емулатори.

    Ето стойностите за текстовите атрибути:

    • Нормален текст: 0
    • Bold или Light Text: 1 (зависи от емулатора на терминала.)
    • Дим Текст: 2
    • Подчертан текст: 4
    • Мигащ текст: 5 (Това не работи в повечето терминални емулатори.)
    • Обратен текст: 7 (Това обръща цветовете на преден план и фон, така че ще видите черен текст на бял фон, ако текущият текст е бял текст на черен фон.)
    • Скрит текст: 8

    Всъщност не трябва да включвате нормалния текстов атрибут. Така или иначе е по подразбиране.

    Например, тъй като червеният текст е код 31, а удебеленият текст е код 1, ще използвате \ [\ 033 [1; 31т \] за удебелен червен текст.

    Можете също да зададете цвят на фона, но не можете да добавите атрибут към цвета на фона.

    Ето стойностите за фоновите цветове:

    • Черен фон: 40
    • Син фон: 44
    • Циан фон: 46
    • Зелен фон: 42
    • Лилав фон: 45
    • Червен фон: 41
    • Бял фон: 47
    • Жълт фон: 43

    Например, тъй като син фон е код 44, \ [\ 033 [44т \] ще посочи син фон.

    Можете да укажете етикети за цвят и за преден план. Например, 42 представлява зелен фон и 31 представлява червен текст. За да направите подразбиращия се ред червен текст на зелен фон, трябва да използвате:

    PS1 = "\ [\ 033 [42т \] \ [\ 033 [31m @ u: h: w \ t

    Тук просто посочваме един цвят на фона и след това един цвят на преден план, който започва в началото на подканата и се прилага за целия текст в подканата. Въпреки това, можете да зададете колкото искате цветови маркери в променливата, за да оцветявате различни секции от подсказката, както искате.

    Цветовете на фона и текста на преден план продължават да минават през подканата, освен ако не зададете код за цвят 00, за да изчистите информацията за цвета. Можете също да използвате този маркер в променливата, за да възстановите форматирането обратно към подразбиране някъде в подканата. Например следният ред ще сложи край на всички цветове преди \ $ характер.

    PS1 = "\ [\ 033 [42т \] \ [\ 033 [31т \] \ ф @ \ ч \ т \\ [\ 033 [00m \ t

    Как да зададете новата подразбиране

    След като приключите с експериментирането с цветовете, трябва да имате подкана Bash в текущата сесия. Но вие вероятно искате да направите този нов ред постоянен, така че да се използва автоматично във всички ваши Bash сесии.

    За да направите това, просто трябва да промените съдържанието на променливата PS1 в .bashrc файла, който погледнахме по-рано.

    Отворете файла .bashrc в предпочитания текстов редактор, като:

    nano ~ / .bashrc

    Превъртете надолу и намерете секцията PS1 =. Просто заменете променливата по подразбиране с персонализираната променлива. Вероятно ще искате да напуснете $ Debian_chroot: + ($ debian_chroot)  само бита, обаче - няма да се появят, освен ако не сте в chroot среда.

    Въведете цветната PS1 променлива под ако ["$ color_prompt" = yes]; тогава линия. Въведете променливата без цветове в полето още линия.

    Запазете файла и затворете текстовия редактор. Например, за да запишете файла в nano, натиснете Ctrl + O, натиснете Enter и след това натиснете Ctrl + X, за да излезете.

    Следващият път, когато стартирате нова Bash черупка - например, като влезете в терминала или като отворите нов прозорец на терминала, ще видите персонализирания си ред.