2.3 Урок 1
Вступ
Сертифікат: |
Linux Essentials |
---|---|
Версія: |
1.6 |
Розділ: |
2 Знайдіть свій шлях у системі Linux |
Тема: |
2.3 Використання каталогів і переліку файлів |
Урок: |
1 з 2 |
Файли та каталоги
Файлова система Linux подібна до файлових систем інших операційних систем тим, що містить файли та каталоги. Файли містять такі дані, як зрозумілий людині текст, виконувані програми або двійкові дані, які використовуються комп’ютером. Каталоги використовуються для впорядкування файлової системи. Каталоги можуть містити файли та інші каталоги.
$ tree Documents ├── Mission-Statement.txt └── Reports └── report2018.txt 1 directory, 2 files
У цьому прикладі Documents
— це каталог, який містить один файл (Mission-Statement.txt
) та один підкаталог (Reports
). У свою чергу, каталог Reports
містить один файл під назвою report2018.txt
. Говорять, що каталог Documents
є батьківським для каталогу Reports
.
Tip
|
Якщо команда |
Імена файлів та каталогів
Імена файлів і каталогів у Linux можуть містити літери нижнього та верхнього регістру, цифри, пробіли та спеціальні символи. Однак, оскільки багато спеціальних символів мають особливе значення в оболонці Linux, правильним буде підхід не використовувати пробіли чи спеціальні символи під час іменування файлів або каталогів. Наприклад, для коректного використання пробілів потрібно правильно ввести символ escape \
:
$ cd Mission\ Statements
Розглянемо ім’я файлу report2018.txt
. Імена файлів можуть містити суфікс, який йде після крапки (.
). На відміну від Windows, цей суфікс не має особливого значення в Linux; він призначений тільки для сприйняття людиною. У нашому прикладі .txt
вказує нам, що це текстовий файл, хоча технічно він може містити будь-які дані.
Навігація по файловій системі
Отримання поточного місцезнаходження
Оскільки оболонки Linux, такі як Bash, засновані на тексті, важливо пам’ятати ваше поточне розташування під час навігації по файловій системі. Командний рядок надає таку інформацію:
user@hostname ~/Documents/Reports $
Зауважте, що така інформація, як user
і hostname
, буде розглянута в наступних розділах. З командного рядку ми тепер знаємо, що наше поточне розташування знаходиться в каталозі Reports
. Аналогічно, команда pwd
надрукує робочий каталог:
user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports
Зв’язок між каталогами представлено косою рискою (/
). Ми знаємо, що Reports
є підкаталогом Documents
, який є підкаталогом user
, який розташований у каталозі, який називається home
. Виглядає так, що нібито home
не має батьківського каталогу, але це зовсім не так. Батьківський елемент каталогу home
називається кореневим каталогом (root) і представлений першою косою рискою (/
). Ми обговоримо кореневий каталог у наступному розділі.
Зверніть увагу, що виведення команди pwd
дещо відрізняється від шляху, зазначеного в командному рядку. Замість /home/user
командний рядок містить тильду (~
). Тильда — це спеціальний символ, який представляє домашній каталог користувача. Більш детально це буде розглянуто на наступному уроці.
Перегляд вмісту каталогу
Вміст поточного каталогу відображається за допомогою команди ls
:
user@hostname ~/Documents/Reports $ ls report2018.txt
Зауважте, що ls
не надає інформації про батьківський каталог. Аналогічно, за замовчуванням ls
не показує жодної інформації про вміст підкаталогів. ls
може лише “бачити” те, що знаходиться в поточному каталозі.
Зміна поточного каталогу
Навігація в Linux в основному здійснюється за допомогою команди cd
. Вона змінює каталог. Використовуючи попередню команду pwd
, ми знаємо, що наш поточний каталог /home/user/Documents/Reports
. Ми можемо змінити наш поточний каталог, ввівши новий шлях:
user@hostname ~ $ cd /home/user/Documents user@hostname ~/Documents $ pwd /home/user/Documents user@hostname ~/Documents $ ls Mission-Statement.txt Reports
З нашого нового розташування ми можемо “бачити” Mission-Statement.txt
та наш підкаталог Reports
, але не вміст нашого підкаталога. Ми можемо повернутися до "Reports" таким чином:
user@hostname ~/Documents $ cd Reports user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports user@hostname ~/Documents/Reports $ ls report2018.txt
Тепер ми повернулися туди, де починали.
Абсолютний і відносний шляхи
Команда pwd
завжди виводить абсолютний шлях. Це означає, що шлях містить кожен крок шляху, від верхньої частини файлової системи (/
) до нижньої частини (Reports
). Абсолютні шляхи завжди починаються з /
.
/ └── home └── user └── Documents └── Reports
Абсолютний шлях містить всю інформацію, необхідну для доступу до Reports
з будь-якої точки файлової системи. Недоліком є те, що набирати такий текст стомлює.
Другий приклад (cd Reports
) було набагато легше ввести. Це приклад відносного шляху. Відносні шляхи коротші, але мають сенс лише відносно вашого поточного місцезнаходження. Розглянемо аналогію: я відвідую вас у вашому домі. Ви говорите, що ваш друг живе по сусідству. Я розумію де він живе, тому що його помешкання розташоване відносно мого поточного місцезнаходження. Але якщо ви скажете мені це телефоном, я не зможу знайти будинок вашого друга. Вам потрібно буде дати мені повну адресу.
Особливі відносні шляхи
Оболонка Linux дає нам способи скоротити наш шлях під час навігації. Щоб розкрити перші спеціальні шляхи, ми вводимо команду ls
з прапорцем -a
. Цей прапорець змінює команду ls
таким чином, щоб виводився перелік всіх файлів і каталогів включно з прихованими файлами та каталогами:
user@hostname ~/Documents/Reports $ ls -a . .. report2018.txt
Note
|
Ви можете звернутися до сторінки |
Ця команда показала два додаткові результати: Це спеціальні шляхи. Вони не представляють нові файли чи каталоги, а представляють каталоги, які ви вже знаєте:
.
-
Вказує на поточне розташування (у цьому випадку
Reports
). ..
-
Вказує батьківський каталог (у цьому випадку
Documents
).
Зазвичай не потрібно використовувати спеціальний відносний шлях для поточного розташування. Легше і зрозуміліше ввести report2018.txt
, ніж ./report2018.txt
. Але .
має застосування, про яке ви дізнаєтеся в наступних розділах. Наразі ми зосередимося на відносному шляху для батьківського каталогу:
user@hostname ~/Documents/Reports $ cd .. user@hostname ~/Documents $ pwd /home/user/Documents
Приклад cd
набагато простіше, якщо використовувати ..
замість абсолютного шляху. Крім того, ми можемо комбінувати цей шаблон, щоб дуже швидко переміщатися по дереву файлів.
user@hostname ~/Documents $ cd ../.. $ pwd /home
Вправи до посібника
-
Для кожного з наведених нижче шляхів визначте, є він абсолютним чи відносним:
/home/user/Downloads
../Reports
/var
docs
/
-
Зверніть увагу на таку структуру файлів. Примітка: каталоги закінчуються косою рискою (
/
), коли "дерево" викликається з опцією "-F". Вам знадобляться підвищені привілеї, щоб запустити командуtree
у кореневому каталозі (/
). Нижче наведено приклад виведення, який не вказує на повну структуру каталогів. Використовуйте його, щоб відповісти на наступні запитання:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Використовуйте цю структуру, щоб відповісти на наступні запитання.
Користувач вводить такі команди:
$ cd /etc/udev $ ls -a
Яким буде результат команди
ls -a
? -
Введіть найкоротшу команду для кожного з наступних варіантів:
-
Ваше поточне місцезнаходження — кореневий каталог (
/
). Введіть команду, щоб перейти доlost+found
у каталозіhome
(це приклад):$ cd home/lost+found
-
Ваше поточне місцезнаходження — кореневий каталог (
/
). Введіть команду, щоб перейти до каталогу з назвою/etc/network/
. -
Ваше поточне місцезнаходження
/home/user/Documents/
. Перейдіть до каталогу з назвою/etc/
. -
Ваше поточне місцезнаходження
/etc/systemd/system/
. Перейдіть до каталогу з назвою/home/user/
.
-
-
Розглянемо такі команди:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Який результат останньої команди
pwd
?
Дослідницькі вправи
-
Припустимо, що користувач ввів наступні команди:
$ mkdir "this is a test" $ ls this is a test
Яка команда
cd
дозволить вам увійти до цього каталогу? -
Спробуйте ще раз, але після введення
cd this
натисніть клавішу TAB. Що тепер відображається в командному рядку?Це приклад автозаповнення, який є безцінним інструментом не лише для економії часу, але й для запобігання орфографічних помилок.
-
Спробуйте створити каталог, ім’я якого містить символ
\
. Відобразіть назву каталогу за допомогоюls
і видаліть каталог.
Підсумки
У цьому уроці ви дізналися про те:
-
Основи файлової системи Linux.
-
Різницю між батьківським каталогом та підкаталогом.
-
Різницю між абсолютним шляхом до файлу та відносним шляхом до файлу.
-
Спеціальні відносні шляхи
.
і..
. -
Навігацію по файловій системі за допомогою команди
cd
. -
Знаходження свого поточного місцезнаходження за допомогою команди
pwd
. -
Виведення переліку всіх файлів та каталогів за допомогою
ls -a
.
На цьому уроці розглядались наступні команди:
cd
-
Зміна поточного каталогу.
pwd
-
Виведення шляху до поточного робочого каталогу.
ls
-
Виведення вмісту каталогу та відображення властивостей файлів.
mkdir
-
Створення нового каталогу.
tree
-
Відображення ієрархічного списку дерева каталогів.
Відповіді до вправ посібника
-
Для кожного з наведених нижче шляхів визначте, є він абсолютним чи відносним:
/home/user/Downloads
абсолютний
../Reports
відносний
/var
абсолютний
docs
відносний
/
абсолютний
-
Зверніть увагу на таку структуру файлів. Примітка: каталоги закінчуються косою рискою (
/
), коли "дерево" викликається з опцією "-F". Вам знадобляться підвищені привілеї, щоб запустити командуtree
у кореневому каталозі (/
). Нижче наведено приклад виведення, який не вказує на повну структуру каталогів. Використовуйте його, щоб відповісти на наступні запитання:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Користувач вводить такі команди:
$ cd /etc/udev $ ls -a
Яким буде результат команди
ls -a
?. .. rules.d udev.conf
-
Введіть найкоротшу команду для кожного з наступних варіантів:
-
Ваше поточне місцезнаходження — кореневий каталог (
/
). Введіть команду, щоб перейти доlost+found
у каталозіhome
(це приклад):$ cd home/lost+found
-
Ваше поточне місцезнаходження — кореневий каталог (
/
). Введіть команду, щоб перейти до каталогу з назвою/etc/network/
:$ cd etc/network
-
Ваше поточне місцезнаходження
/home/user/Documents/
. Перейдіть до каталогу з назвою/etc/
:$ cd /etc
-
Ваше поточне місцезнаходження
/etc/systemd/system/
. Перейдіть до каталогу з назвою/home/user/
:$ cd /home/user
-
-
Розглянемо такі команди:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Який результат останньої команди
pwd
?/etc/systemd
Відповіді до дослідницьких вправ
-
Припустимо, що користувач ввів наступні команди:
$ mkdir "this is a test" $ ls this is a test
Яка команда
cd
дозволить вам увійти до цього каталогу?$ cd this\ is\ a\ test
-
Спробуйте ще раз, але після введення
cd this
натисніть клавішу TAB. Що тепер відображається в командному рядку?$ cd this\ is\ a\ test
Це приклад автозаповнення, яке є безцінним інструментом не лише для економії часу, але й для запобігання орфографічних помилок..
-
Спробуйте створити каталог, ім’я якого містить символ
\
. Відобразіть назву каталогу за допомогоюls
і видаліть каталог.Ви можете екранувати зворотну косу риску за допомогою іншої зворотної косої риски (
\\
) або використати одинарні чи подвійні лапки для всього імені каталогу:$ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir'