Як використовувати команду cd в Linux

Користувачі 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

Можливо, ви не почнете використовувати усі описані техніки. Однак, напевно, тут ви знайшли щось корисне. Все, що пришвидшує та спрощує навігацію через командний рядок, є корисним!