Як налаштувати оболонку Bash за допомогою shopt

Якщо ви прагнете до тонкого налаштування поведінки вашої командної оболонки Bash, інструмент shopt відкриває перед вами понад пів сотні різноманітних параметрів. За допомогою цих налаштувань ви зможете адаптувати систему Linux під свої індивідуальні потреби та вподобання.

Інструмент shopt

shopt є вбудованою частиною оболонки Bash, тому вам не потрібно встановлювати додаткове програмне забезпечення. З кожним роком кількість опцій, доступних у shopt, зростає. Це означає, що у старіших версіях Bash ви знайдете коротший перелік доступних налаштувань.

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

Далі ми розглянемо всі можливі варіанти shopt, а також надамо інструкції з їх використання та приклади. Зверніться до посібника Bash або до Довідника GNU Bash, щоб дізнатися більше про корисні для вас параметри.

Деякі параметри shopt активовані за замовчуванням, визначаючи стандартну поведінку Bash. Ви можете тимчасово ввімкнути або вимкнути будь-яку опцію, але після закриття сеансу оболонки, зміни будуть скасовані.

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

Доступні параметри shopt

Наразі існує 53 опції shopt. Якщо ви запустите shopt без будь-яких аргументів, вона відобразить їх усі. Перенаправляючи вивід через команду wc, ми можемо підрахувати рядки, слова та символи. Оскільки кожна опція займає окремий рядок, кількість рядків буде дорівнювати кількості доступних параметрів.

Введіть наступну команду:

shopt | wc

Щоб побачити всі параметри в зручнішому форматі, ви можете перенаправити вивід shopt через column, для відображення їх у стовпцях, або використати команду less для перегляду.

Введіть наступну команду:

shopt | column

Пошук опцій shopt у посібнику Linux

Інформація про shopt і його параметри знаходиться в розділі Bash посібника Linux. Розділ Bash досить великий, має понад 6000 рядків. Щоб знайти опис shopt, ви можете скористатися прокруткою або пошуком.

Щоб відкрити посібник Bash, введіть:

man bash

У посібнику натисніть / для початку пошуку. Введіть запит, наприклад, assoc_expand_once, і натисніть Enter.

assoc_expand_once

Ви побачите початок опису параметрів shopt.

Встановлення та вимкнення параметрів

Щоб встановити або вимкнути параметри shopt, використовуйте наступні команди:

-s: встановити (ввімкнути).

-u: скасувати (вимкнути).

Оскільки деякі параметри увімкнені за замовчуванням, зручно перевірити їхній поточний стан. Ви можете зробити це, використовуючи опції -s та -u без вказання назви параметра. shopt відобразить усі ввімкнені або вимкнені опції.

Введіть наступні команди:

shopt -s

shopt -u | column

Використовуючи shopt без -s або -u, ви можете переглянути статус конкретного параметра.

Наприклад, для перевірки налаштування параметра histverify, введіть:

shopt histverify

Щоб ввімкнути його, введіть:

shopt -s histverify

Потім знову перевірте статус:

shopt histverify

Параметр histverify змінює поведінку команди історії. Зазвичай, коли ви викликаєте команду з історії за її номером, наприклад, !245, команда негайно виконується.

Якщо ви хочете переглянути команду перед виконанням або відредагувати її, увімкніть параметр histverify. Введіть команду, наприклад:

!245

Команда буде виведена на екран. Ви можете її видалити, відредагувати або виконати, натиснувши Enter.

Параметр autocd

Коли параметр autocd активний, якщо ви введете ім’я каталогу в командному рядку і натиснете Enter, Bash буде сприймати це як команду cd.

Щоб увімкнути autocd, введіть:

shopt -s autocd

Потім введіть назву каталогу:

Documents

Параметр cdspell

Коли cdspell увімкнено, Bash автоматично виправляє прості друкарські помилки в іменах каталогів під час використання команди cd.

Щоб встановити параметр cdspell, введіть:

shopt -s cdspell

Щоб спробувати перейти в каталог, який містить велику літеру, але ви введете його з маленької, введіть:

cd documents

Потім спробуйте назву каталогу з додатковою літерою:

cd ../Picttures

Bash перейде до відповідних каталогів, незалежно від допущених помилок.

Параметр xpg_echo

Якщо для параметра xpg_echo встановлено значення on, команда echo буде інтерпретувати екрановані символи, наприклад, \n для нового рядка та \t для табуляції.

Спочатку перевірте, чи параметр встановлено, ввівши:

shopt -s xpg_echo

Потім введіть команду echo з символом \n:

echo "This is line onenThis is line two"

Символ нового рядка розірвав рядок у виводі.

Це схоже на використання опції -e (увімкнути інтерпретацію екранованих символів) у команді echo, але xpg_echo робить це поведінкою за замовчуванням.

Параметр dotglob

З опцією dotglob слід бути обережним. Вона дозволяє включати файли та каталоги, назви яких починаються з крапки (.), під час розширення імен файлів. Зазвичай, ці файли та каталоги приховані. Параметр dotglob ігнорує крапку на початку їхніх назв.

Спершу виконаємо пошук файлів та каталогів, що закінчуються на “geek”:

ls *geek

Буде знайдено один файл. Тепер активуємо dotglob:

shopt -s dotglob

І знову виконуємо пошук:

ls *geek

Тепер знайдено два файли, включаючи прихований. Будьте уважні з командами rm та mv, коли dotglob увімкнено.

Параметр nocaseglob

Параметр nocaseglob аналогічний dotglob, але nocaseglob ігнорує відмінності між великими та малими літерами у назвах файлів та каталогів під час розширення імен.

Щоб знайти файли або каталоги, що починаються з “як”, введіть:

ls how*

Знайдеться один файл. Активуємо nocaseglob:

shopt -s nocaseglob

Повторно виконуємо команду ls:

ls how*

Знайдено два файли, один з яких містить великі літери.

Збереження змін

Внесені зміни діють лише до закриття поточного сеансу Bash. Щоб зробити їх постійними, потрібно додати їх до файлу .bashrc.

У вашому домашньому каталозі введіть команду для відкриття файлу .bashrc у текстовому редакторі Gedit (або іншому):

gedit .bashrc

Відкриється Gedit з вмістом файлу .bashrc. Ви побачите там існуючі записи shopt.

Додайте свої налаштування shopt, збережіть зміни та закрийте редактор. Тепер, відкриваючи новий сеанс Bash, ваші налаштування будуть застосовані.

Велика кількість можливостей

Хоча команда shopt має багато опцій, не потрібно намагатися вивчити їх усі. Деякі з них можуть виявитися для вас непотрібними.

Наприклад, деякі параметри призначені для забезпечення сумісності з конкретними старими версіями Bash. Це може бути корисно лише в дуже специфічних випадках.

Перегляньте сторінку посібника Bash або Довідник GNU Bash. Визначте, які параметри для вас корисні, і експериментуйте з ними. Будьте обережні з параметрами, що впливають на розширення імен файлів та каталогів. Спробуйте їх із безпечними командами, такими як ls, доки не будете впевнені у їхній дії.