Як змінити запрошення командної оболонки bash в Linux?

 3321

Основна частина роботи в Linux виконується із командної оболонки. Однією із найпопулярніших оболонок є bash (скор. від «Bourne-Again shell»). bash інтерпретує ваші команди і передає їх на виконання операційній системі.

Що таке запрошення командної оболонки?

Завжди, коли відкривається вікно терміналу, ми бачимо запрошення командної оболонки:

імʼя_користувача@імʼя_хосту:~$

Розглянемо детально:

   імʼя_користувача — імʼя поточного користувача, який увійшов в систему;

   @ — символ-розділювач;

   імʼя_хосту — імʼя хосту системи;

   : — символ-розділювач;

   ~ (тильда) — даним символом позначають домашній каталог користувача /home/<імʼя_користувача>;

   $ — означає, що даний користувач є звичайним користувачем (а знак решітки # позначає користувачів root).

Стейтменти запрошення bash

bash містить 4 різних стейтменти запрошення (PS від англ. Prompt Statement”):

   PS1 — основне запрошення, що відображається перед кожною командою, саме тому воно змінюється найчастіше.

   PS2 — відображається в тих випадках, коли команді потрібні додаткові дані для вводу (наприклад, при використанні багаторядкових команд).

   PS3 — відображається при роботі вбудованої в оболонку команди інтерактивного меню select.

   PS4 — використовується для запуску сценарію оболонки в режимі відладки.

До цього часу ми працювали тільки з PS1. В більшості випадків ви будете працювати тільки з даним стейтментом і, можливо, з PS2.

Щоб побачити поточне значення PS1, введіть наступне:

echo $PS1

В залежності від системи термінал поверне щось на зразок:

Тепер розглянемо, що у нас міститься у PS2:

echo $PS2

І результатом отримаємо тільки одну кутову дужку:

>

Та ж команда для PS3 поверне пустий рядок.

А для PS4 ви побачите знак +.

Зміна запрошення bash

Поведінка bash задається через файл конфігурації .bashrc, розміщений в домашньому каталозі користувача. Якщо імʼя вашого користувача, наприклад, petro, то шлях до файлу буде наступним:

/home/petro/.bashrc

Або короткий запис:

~/.bashrc

Важливо! Перед внесенням будь-яких змін в даний файл варто зробити його резервну копію. Для цього відкрийте термінал і введіть наступну команду:

cp ~/.bashrc ~/.bashrc.bak

Примітка: Розширення .bak (від англ. backup”) повідомляє нам, що файл є резервною копією.


Зміна запрошення bash на весь час

Відкрийте для редагування файл конфігурації bash:

sudo nano ~/.bashrc

В цьому файлі ви побачите декілька різних налаштувань. Деякі з них в даний момент неактивні і є звичайними коментарями — рядки синьо-зеленого кольору, перед якими стоїть знак #. Рядки білого кольору використовуються оболонкою для налаштування її поведінки.

Прогорніть екран до кінця файлу конфігурації і додайте наступний рядок:

PS1="aCodePrompt> "

Ви можете замінити частину aCodePrompt> будь-яким рядком тексту, який забажаєте.

Збережіть файл (Комбінація клавіш Ctrl+O, а потім Enter) і вийдіть із редактора (Ctrl+X).

Оновіть bash, щоб застосувати зміни:

source ~/.bashrc

В результаті виконання даних команд запрошення оболонки має змінитись на наступне:


Тимчасова зміна запрошення bash

Ви можете тимчасово змінити запрошення оболонки bash за допомогою команди export. Зміни оболонки, що застосовані даною командою, будуть активними поки користувач не вийде із системи.

Давайте задамо такий вид запрошення, при якому відображатиметься лише імʼя користувача:

export PS1="\u >"

В результаті, запрошення оболонки має негайно прийняти наступну форму:

імʼя_користувача >

Ви можете скасувати дані зміни просто перезайшовши в систему.


Популярні користувацькі параметри запрошення bash

Ви можете використовувати наступні параметри з будь-яким методом зміни запрошення bash: тимчасовий (за допомогою команди export) або постійний (відредагувавши файл .bashrc).


Відображення імені користувача та імені хосту

Використовуйте опцію -H для відображення повного імені хосту:

export PS1="\u\H "

Ви повинні побачити імʼя хосту в запрошенні:


Додавання спеціальних символів

Ви можете додати в запрошення оболонки спеціальні символи, розмістивши їх разом із знайомими вам опціями:

export PS1="\u@\H :"

Результатом буде наступне відображення:

імʼя_користувача@імʼя_хосту:

Примітка: Рекомендую зробити так, щоб запрошення закінчувалось спеціальним символом або пробілом: двокрапка, кутова дужка, або символ пробілу перед закриваючими лапками. Це допоможе користувачам візуально відділити запрошення оболонки від ввведеної в даний момент команди.


Відображення імені користувача, імені та версії оболонки

Введіть наступну команду, щоб відобразити імʼя користувача, назву оболонки (s від англ. shell”) та її версію (v від англ. version”):

export PS1="\u >\s\v "

Запрошення має змінитись на наступне:


Додавання дати та часу в запрошення bash

Використовуйте наступні параметри для відображення різних форматів дати та часу:

   \d — відображає поточну дату в форматі [день_тижня]/[місяць]/[число]:

export PS1="\u@\H>\d "

   \t — відображає поточний час в 24-годинному форматі:

export PS1="\u@\H>\t "

   \T — відображає поточний час в 12-годинному форматі:

export PS1="\u@\H>\T "

   \A — відображає поточний час в 24-годинному форматі, але без секунд:

export PS1="\u@\H>\A "

Примітка: Параметри \u@\H, написані перед параметрами дати та часу, додають імʼя користувача (u від англ. «username») та імʼя хосту (H від англ. Hostname”).


Прибираємо всю інформацію із запрошення bash

Використовуйте цю можливість, щоб приховати відображення імен користувачів або імені хосту в запрошенні:

export PS1="\W > "

Ви повинні побачити наступне:

~ >


Відділення звичайних користувачів від root

В стандартному запрошенні оболонки знак $ вказує на звичайного користувача. Якщо ви заходите в систему як користувач root, то відобразиться знак #.

Використовуйте символ $, щоб вказати, що даний користувач не належить до root:

export PS1="\u@\H \W:\$ "


Додаткові параметри оболонки

Нижче представлено список більшості параметрів, які ви можете використовувати для налаштування запрошення bash. Варто додати, що не всі з них можуть підтримуватися конкретним Linux-дистрибутивом:

   \a — звуковий сигнал;

   \d — дата (день/місяць/число);

   \D{формат} — форматований вивід поточного часу;

   \e — символ escape-послідовності;

   \h — імʼя хосту (коротке, до першої крапки);

   \H — повне імʼя хосту (доменне імʼя);

   \j — кількість завдань, що обробляються оболонкою в даний момент;

   \l — назва терміналу;

   \n — перехід на новий рядок;

   \r — повернення каретки на початок рядка;

   \s — назва оболонки;

   \t — час в 24-годинному форматі (години:хвилини:секунди);

   \@ — час в 12-годинному форматі (AM/PM);

   \A — час в 24-годинному форматі без секунд;

   \u — поточне імʼя користувача;

   \v — версія bash;

   \V — додаткова інформація про версію bash (номер релізу, патчу);

   \w — поточний робочий каталог;

   \W — базове імʼя робочого каталогу;

   \! — відображається номер, під яким команда буде занесена в історію команд bash;

   \# —  відображає номер команди в поточному сеансі без привʼязки до історії. При запуску нового термінала, нумерація починається з одиниці;

   \$ — якщо користувачем є root, то використовується символ #, в протилежному випадку — символ $;

   \\ — бекслеш;

   \[ — початок послідовності символів, що не друкуються (корисно, якщо ви хочете змінити колір, додати команду або набір інструкцій в запрошення);

   \] — кінець вищеописаної послідовності символів, що не друкуються.

Додавання в запрошення bash виконання команди

Є ще один трюк, з яким корисно познайомитись: ви можете додати в запрошення командної оболонки вивід будь-якої команди. В такому випадку, коли зʼявляється запрошення оболонки, bash запускає команду і відображає її вивід. Для цього просто додайте імʼя будь-якої команди, яку ви хочете запустити, між двома символами машинописного зворотного апострофа (так званий backtick, зазвичай розміщений на тій же клавіші, що і тильда ~):

В якості іншого прикладу, уявімо, що ви хочете переглянути час безвідмовної роботи системи і середнє значення навантаження, відображене командою uptime. Ви можете використовувати наступну конструкцію, яка містить час безвідмовної роботи в своєму власному рядку перед рештою запрошення:

Як змінити колір запрошення bash?

Параметри кольору рядка запрошення задаються у вигляді наступної послідовності — \e[X;Y;Zm, де:

   \e[ — частина із escape-символом, що означає початок зміни кольору;

   X — код атрибуту текста:

   0 — нормальний;

   1 — жирний (яскравий);

   2 — тьмяний;

   4 — підкреслений;

   Y — кольоровий код тексту:

   30 — чорний;

   31 — червоний;

   32 — зелений;

   33 — коричневий;

   34 — синій;

   35 — фіолетовий;

   36 — блакитний;

   37 — яскраво-сірий.

   Z — кольоровий код фону:

    40 — чорний;

   41 — червоний;

   42 — зелений;

   43 — коричневий;

   44 — синій;

   45 — фіолетовий;

    46 — блакитний;

   47 — яскраво-сірий.

   m — символ, що вказує на кінець блоку з кольоровим текстом.

Примітка: Для того, щоб термінал коректно виконував обробку нашої послідовності, необхідно її помістити між символами \[ і \], тобто \e[X;Y;Zm стане \[\e[X;Y;Zm\].

Розглянемо приклад, який тимчасово змінює текст і колір рядка запрошення на зелений:

export PS1="\[\e[0;32m\][\u@\h \W]\$ \[\e[0m\]"

Розглянемо детально:

   \[ — символи, що означають початок блоку зміни атрибутів тексту;

   \e[ — початок блоку коду кольорів;

   0;32 — код кольору (0 — звичайний текст, 32 — зелений);

   m — символ, що вказує на кінець блоку з кодом кольору;

   \] — кінець блоку зміни атрибутів тексту;

   [\u@\h \W]\$ — код, що задає стандартний вигляд запрошення оболонки;

   \[ — символи, що означають початок блоку зміни атрибутів тексту;

   \e[ — початок блоку коду кольорів;

   0 — код кольору (0 — звичайний текст білого кольору);

   m — символ, що вказує на кінець блоку з кодом кольору;

   \] — кінець блоку зміни атрибутів тексту.

В результаті отримаємо:

Крім того, якщо ви поєднаєте опцію яскравості з кодом кольору, то отримаєте яскравішу версію заданого кольору. Наприклад, якщо ви використовуєте код кольору 1;32, то отримаєте світло-зелений колір замість звичайного зеленого. Якщо використаєте 1;33, то отримаєте жовтий колір замість коричневого.

Скидання змін до конфігурацій за замовчуванням

Для тимчасових змін (введених за допомогою команди export PS1="") достатньо просто вийти із системи.

Якщо ж ви редагували файл .bashrc, то є два способи повернутись до налаштувань за замовчуванням:

   Спосіб №1: Закоментуйте свої зміни в файлі, додавши на початок кожного рядка символ #.

   Спосіб №2: Відновіть налаштування із резервної копії ввівши команду:

sudo cp ~/.bashrc.bak ~/.bashrc

Висновки

Приклади, описані в даній статті є лиш невеликою демонстрацією того, яким чином налаштовується зовнішній вигляд запрошення оболонки. Не бійтесь експериментувати з різними спеціальними символами, командами та параметрами, щоб створити свій ідеальний вигляд командного рядка.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (7 оцінок, середня: 4,86 з 5)
Завантаження...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *