Користувачі Linux часто використовують деякі команди настільки часто, що навіть не замислюються про це. Команда cd
, яка служить для зміни каталогів, є яскравим прикладом. Існує низка тонкощів, що дозволяють зробити роботу з нею ефективнішою, або навіть відмовитись від її прямого використання.
Команда, про яку ми рідко думаємо
Наприклад, ми кліпаємо очима кожного дня, але рідко зосереджуємося на цьому процесі. Подібно до цього, деякі команди Linux постійно присутні у нашому повсякденному використанні, але не привертають особливої уваги через свою простоту. Команда cd
– одна з таких.
Майже відразу після початку роботи з Linux, користувач знайомиться з командою cd
, що є частиною Bash та інших оболонок. Можливо, ви вже маєте досвід її використання в інших операційних системах. Вона просто змінює поточний робочий каталог. Чи потрібно знати щось ще?
Насправді, є декілька прийомів, які можуть значно підвищити продуктивність при використанні cd
.
Базові операції з командою cd
Давайте розглянемо стандартні способи застосування команди cd
.
Припустимо, ви знаходитесь у домашньому каталозі, але бажаєте перейти до /usr/lib/firefox/browser
, а потім знову повернутись до домашнього каталогу. Для цього можна скористатись наступними командами:
cd /usr/lib/firefox/browser/
cd /home/dave
Не потрібно вводити повний шлях до каталогу. Застосовуйте автодоповнення. Після введення достатньої кількості символів, щоб відрізнити назву каталогу від інших, натисніть клавішу Tab, і оболонка автоматично доповнить назву.
Наприклад, у командному рядку введіть:
cd /usr/lib/fire
Тепер натисніть Tab. Оболонка доповнить “firefox”. Якщо додати “/b” і знову натиснути Tab, до команди додасться “browser”.
Оболонка автоматично додає косу риску в кінці шляху. Вона відсутня в другій команді, оскільки вона була введена вручну.
Тильда (~
) є скороченням для швидкого повернення до домашнього каталогу з будь-якої точки файлової системи. Просто введіть:
cd ~
Ці приклади демонструють абсолютні шляхи, де вказано повний шлях від кореня файлової системи до потрібного каталогу. Відносні шляхи визначаються відносно поточного робочого каталогу. Якщо у домашньому каталозі є каталог з назвою work
, то можна скористатись командою tree
для перегляду дерева каталогів:
tree
Всередині каталогу work
є каталог dev
. Також у кореневому каталозі є каталог dev
. За допомогою команди ls
з параметром -d
(для каталогу) можна переглянути кожен з них. Параметр -hl
(читабельний, довгий список) наказує ls
використовувати зручні для читання одиниці для розмірів каталогу та довгий формат списку.
Якщо ввести dev
, оболонка вважатиме, що йдеться про каталог dev
у поточному каталозі. Для доступу до каталогу dev
в корені файлової системи потрібно додати косу риску, як показано нижче:
ls -d dev -hl
ls -d /dev -hl
Команда cd
поводиться аналогічно до ls
. Якщо вказати каталог як dev
, як у прикладі нижче, то за замовчуванням мається на увазі каталог у поточному робочому каталозі:
cd dev
Без косої риски на початку, довші шляхи також інтерпретуються як такі, що починаються з поточного робочого каталогу:
cd dev/mobile/android
Переміщення між каталогами за допомогою подвійної точки
Подвійна крапка (..
) представляє батьківський каталог поточного робочого каталогу. Якщо ви знаходитесь у глибоко вкладеному підкаталозі, ви можете використовувати ..
з cd
для переходу до батьківського каталогу.
Наприклад, це дозволить переміститись на два каталоги вгору по дереву. Додаючи більше ..
до команди, ви можете переміщатися на довільну кількість рівнів вгору.
Введіть:
cd ..
cd ../..
Ви можете створити псевдоніми для виконання таких дій, ввівши:
alias .2="cd ../.."
alias .3="cd ../../.."
Використовувати їх можна так само, як звичайні команди.
Щоб псевдоніми зберігались після перезавантаження комп’ютера, потрібно додати їх до файлу .bashrc
або .bash_aliases
.
Легкий перехід між двома каталогами
Дефіс (-
) – ще один символ з особливою функцією. Він повертає вас до каталогу, з якого ви щойно прийшли.
Припустимо, ви зараз знаходитесь у каталозі “c”. За допомогою cd
перейдіть у каталог “forth”. Тепер можна перемикатися між двома каталогами за допомогою cd -
.
Введіть:
cd ../forth
cd -
cd -
Назва каталогу, до якого ви переміщаєтесь, відображається перед самим переходом.
Інший вид відносних шляхів
Оболонка використовує поточний робочий каталог як базовий каталог для відносних шляхів. Можна застосувати змінну середовища CDPATH
, щоб визначити інше розташування як базовий каталог. Якщо ви часто працюєте у певній частині дерева файлової системи, це може заощадити час і зусилля.
Введемо наступне, щоб встановити work/dev/projects
як базовий каталог для відносних шляхів:
export CDPATH=/home/dave/work/dev/projects
Відтепер при кожному використанні команди cd
, оболонка спочатку перевірятиме вказані імена каталогів у змінній середовища CDPATH
. Якщо відповідність знайдено, вас перемістить до цього каталогу.
Тепер, де б ви не знаходились у файловій системі, при використанні команди cd
, оболонка перевіряє, чи знаходиться цільовий каталог у базовому. Якщо так, ви переміститесь у нього.
Якщо цільовий каталог починається з косої риски (/
), що робить його абсолютним шляхом, змінна середовища CDPATH
не вплине на нього.
Для демонстрації, введіть наступне:
cd c
cd prolog
cd /usr
cd forth
Змінна середовища CDPATH
є шляхом, як і PATH
. Коли вводиться команда, оболонка шукає відповідне розташування у PATH
. При використанні CDPATH
, оболонка шукає відповідне розташування у CDPATH
. CDPATH
може містити декілька розташувань.
Щоб оболонка шукала поточний каталог перед іншими розташуваннями у CDPATH
, потрібно додати крапку (.
) на початку шляху:
export CDPATH=.:/home/dave/work/dev/projects
Щоб зміни були постійними, їх потрібно додати до файлу конфігурації, наприклад, .bashrc
.
Слід пам’ятати, що встановлення базового каталогу впливає на зміни каталогів у скриптах. Для уникнення цього, застосовуйте абсолютні шляхи у скриптах, або перевіряйте у файлі .bashrc
при визначенні CDPATH
:
if test “${PS1+set}”; then CDPATH=.:/home/dave/work/dev/projects; fi
Цей код виконує перевірку, чи встановлена змінна командного рядка $PS1
. Змінна середовища CDPATH
буде встановлена лише за умови успішної перевірки.
Використання shopt
з командою cd
За допомогою команди shopt
, можна налаштувати певні параметри для оболонки. Деякі з них можуть покращити роботу з командою cd
. Для їх встановлення використовується опція -s
(увімкнути) разом з shopt
та ім’ям параметра.
Параметр cdspell
перевіряє назви каталогів на наявність типових помилок введення, включаючи переставлені, пропущені або зайві символи. Якщо знайдено каталог, що відповідає виправленням, то виводиться виправлений шлях і виконується дія cd
.
Наприклад, введімо наступне, щоб встановити параметр cdspell
та ввести назву каталогу з помилкою “Desktpo”:
shopt -s cdspell
cd Desktpo
Оболонка виявила помилку, виправила її та перейшла до каталогу “Desktop”.
Інший параметр shopt
, який можна використовувати з cd
, – це autocd
. Він скасовує необхідність вводити cd
. Все, що вводиться, що не є командою, скриптом або виконуваним файлом (наприклад, псевдонімом), використовується як цільовий каталог. Якщо вдається перейти до цього каталогу, він буде виведено у вікно терміналу, і ви переміститесь до нього.
Наприклад, введіть:
shopt -s autocd
/usr/local/games
/etc
~
Як бачите, можна переміщатись по файловій системі без використання команди cd
!
Налаштування, змінені за допомогою shopt
, впливають лише на інтерактивні оболонки, а не на скрипти.
Висновок про команду cd
Можливо, ви не почнете використовувати усі описані техніки. Однак, напевно, тут ви знайшли щось корисне. Все, що пришвидшує та спрощує навігацію через командний рядок, є корисним!