За допомогою кількох команд і низки хитрощів можна легко переміщатися файловою системою Linux і ніколи не заблукати. Лайфхаками ділиться Network World.
Абсолютний і відносний шляхи
Перш ніж почати, важливо зрозуміти різницю між абсолютними шляхами (наприклад, /home/jdoe) та відносними шляхами (наприклад, images/photos та ..). Абсолютні шляхи завжди починаються з /, що, звичайно, є основою файлової системи. Якщо вказаний шлях не починається з /, він відносний.
Ось кілька прикладів відносних та абсолютних шляхів:
/tmp <=== absolute (a directory inside /)
/home/jdoe/poems <=== absolute (one of jdoe’s subdirectories)
reports <=== relative (inside the current directory)
.. <=== relative (the directory that contains the current directory)
. <=== the current location
На щастя, повернутися додому – найпростіше, що ви можете зробити. Просто введіть cd (змінити каталог) без жодних аргументів, і ви потрапите туди.
Використання pwd
Команда pwd повідомляє вам, де ви зараз знаходитесь. Якщо ви щойно увійшли, це буде ваш домашній каталог. Якщо деякий час досліджували файлову систему, це може бути будь-де, куди вам дозволяє перейти ваш обліковий запис користувача. Зрештою, ви не можете увійти в каталог, якщо у вас немає прав на читання.
Якщо ви використаєте команду pwd для визначення вашого поточного розташування, вона повідомить вам, де ви знаходитесь у файловій системі, використовуючи абсолютний шлях.
$ pwd
/home/justme/images
Єдина складність полягає у тому, що якщо ви переходите до каталогу за допомогою символічного покликання й запитуєте, де ви знаходитесь, cd покаже вам розташування за допомогою покликання.
$ ln -s /tmp/test testdir
$ cd testdir
$ pwd
/home/shs/testdir
Однак ви можете спробувати команду, подібну до наведеної нижче, щоб побачити, де ви насправді знаходитесь у файловій системі:
$ pwd
/home/shs/testdir
$ echo $( dirname $(realpath "symlink") )
/tmp/test <=== aha!
Використання команди tree
Щоб отримати ширшу картину того, де ви знаходитесь у будь-який момент часу, ви можете скористатися командою tree. Вона відображатиме багаторівневий перегляд файлів і каталогів у вашому поточному розташуванні, надаючи вам уявлення про каталог і його вміст.
$ tree
.
├── bin
├── file1
├── file2
├── file3
├── myfile
├── mypipe0
└── testdir -> /tmp/test
Використання cd
Команда cd (змінити каталог) перемістить вас у будь-який каталог, до якого ви попросите перейти, якщо 1) він існує, 2) у вас є дозвіл на виконання. Ви можете перераховувати файли, лише якщо у вас є доступ для читання.
Запитане розташування може бути певним повним шляхом, каталогом щодо вашого поточного розташування або розташуванням, на яке вказує символічне покликання. Ось кілька прикладів:
$ cd /tmp
$ pwd
/tmp
$ cd
$ pwd
/home/justme
$ cd ..
$ pwd
/home
Використання ~
Ще один спосіб повернутися до домашнього каталогу – ввести cd ~ і натиснути клавішу повернення. Це працює, оскільки ключ ~ представляє ваш домашній каталог.
Також можна використовувати ~ для покликання на свій домашній каталог, коли ви перебуваєте в іншому місці. Ось приклад:
$ pwd
/tmp
$ cp report ~
Ця команда скопіює файл під назвою «report» у ваш домашній каталог швидше, ніж ви могли б ввести "/home/justme".
Полегшення
Якщо у файловій системі є місця, до яких вам потрібно переходити досить часто, не сидіть там і не вводьте команду на кшталт cd /development/docs/reports», щоб потрапити туди. Натомість створіть символічне покликання за допомогою такої команди, як показано нижче, щоб перейти туди швидше та легше.
$ ln -s /development/docs/reports ~/reports
Після цього ви можете перейти до каталогу, ввівши «cd reports» (або «cd ~/reports, якщо ви не починаєте з домашнього каталогу) і скопіювати файли з нього за допомогою однієї з таких команд:
$ cp reports/latest . <== if you're in your home directory
$ cp reports/latest ~ <== if you're in your home directory or not
Перша команда копіює файл у ваше поточне розташування. Друга – у ваш домашній каталог.
Також можна використовувати символічне покликання для переходу до каталогу, коли вам це потрібно, незалежно від того, де ви перебуваєте:
$ cd ~/reports
$ ls -ltr | tail -1
-rw-rw----. 1 justme justme 22 Aug 22 11:11 report
Підсумки
Переміщатися файловою системою Linux відносно легко, але необхідно знати, що вам не потрібно покладатися на абсолютні імена шляхів, щоб дістатися туди, куди ви хочете, або копіювати файли до чи з інших каталогів.