Знову про файлах: каталоги

Система відрізняє ваш файл junk від будь-якого іншого з таким же імям Розпізнавання можливо завдяки тому, що файли згруповані в каталоги (Подібно до того, як книги в бібліотеці розставлені по полицях), і файли в різних каталогах можуть мати однакові імена, не створюючи ніяких конфліктів

Зазвичай у кожного користувача є особистий, абодомашній ката5 лог, Який містить інформацію, що належить тільки цьому користувачеві (іноді його ще називають каталогом регістраціі1 (login directory)) Увійшовши в систему, користувач потрапляє в домашній каталог Можна змінити каталог, в якому ви працюєте, зазвичай він називається робочим, абопоточним каталогом, Але домашній каталог завжди один і той же Якщо спеціально не вказано інше, то при созда нии файлу він поміщається в поточний каталог Оскільки спочатку це домашній каталог, то файл не має ніякого відносини до файлу з таким же імям, який може існувати в каталозі іншого користувача

Каталог може включати в себе не тільки файли, але і каталоги («Great directories have lesser directories ..» – «У великих каталогів є маленькі каталоги ..», як у вірші Огастеса Де Моргана) Природний спосіб представлення структури файлової системи – це дерево каталогів і файлів Усередині цього дерева можна переміщатися в пошуку файлу від кореня дерева по гілках і, навпаки, можна почати з того місця, де ви знаходитесь, і рухатися назад до кореня

Почнемо з реалізації останньої описаної можливості Основним інструментом буде команда pwd (print working directory – показати робочий каталог), яка виводить імя поточного каталогу:

$ pwd

/usr/you

$

Це означає, що в даний час користувач знаходиться в каталозі you, який знаходиться в каталозі usr, який, у свою чергу, знаходиться в кореневому каталозі, Який умовно позначається як / Символи / поділяють компоненти імені довжина кожного компонента такого імені обмежена 14 символами, як і імя файла2 У багатьох системах / usr – це каталог, містить каталоги всіх звичайних користувачів системи (Навіть якщо домашній каталог і не / usr / you, команда pwd все одно виведе щось подібне, так що наведені нижче міркування підійдуть і для цього випадку)

1 Хоча насправді так його не називають ніколи – Прямуючи науч ред

2 Була обмежена Див вище – Прямуючи науч ред

Якщо тепер ввести

$ ls /usr/you

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

Тепер спробуємо

$ ls /usr

Буде виведений довгий список імен, серед яких буде і реєстраційний каталог you

Наступним кроком буде спроба вивести вміст кореневого ка талоге Відповідь має бути приблизно таким:

$ ls / bin boot dev

etc  lib tmp unix usr

$

(Не плутайте два сенсу символу / це і позначення кореневого каталогу, і роздільник компонентів імені файлу) Майже всі перераховані елементи являють собою каталоги, але от unix – це файл, що містить ядро ​​UNIX в виконуваному вигляді Детально погово рим про це в главі 2

Введемо команду

$ cat  /usr/you/junk

(Якщо junk ще присутній в домашньому каталозі) Імя

/usr/you/junk

називається шляхом до файлу «Шлях до файлу» – це назва з інту ітівно зрозумілим сенсом, що означає повне імя шляху від кореня по дереву каталогів до конкретного файлу В системі UNIX існує універсальне правило – Скрізь, де може використовуватися звичайне імя файлу, може використовуватися і колійне імя

Структура файлової системи нагадує генеалогічне дерево Спробуємо пояснити (рис 11)

Файл junk користувача you не має ніякого відношення до файлу з таким же імям, що належить Полу (paul) або Мері (mary)

Рис 11 Дерево каталогів

Якщо все цікавлять користувача файли знаходяться в його особистому каталозі, то шляхові імена не мають особливого значення, а от якщо він працює разом з кимось або займається кількома проектами одночасно, тут шляхові імена стають дійсно корисними Наприклад, друзі можуть роздрукувати ваш файл junk, просто ввівши команду

$ cat  /usr/you/junk

Аналогічно і ви можете, наприклад, переглянути, які файли є у Мері:

$ ls /usr/mary

data  junk

$

або зробити собі копію одного з її файлів:

$ cp /usr/mary/data  data

або навіть відредагувати її файл:

$ ed /usr/mary/data

Якщо користувач не хоче, щоб інші копалися в його файлах, він може обмежити доступ до них Для кожного каталогу і файлу заду ються права на читання-запис-виконання для власника, групи і всіх інших, за допомогою яких можна контролювати доступ (Згадайте ls-l) Користувачі наших локальних систем бачать більше переваг у відкритості, а не в секретності, але для інших систем політика може бути іншою Повернемося до обговорення цього питання в главі 2

Отже, остання серія експериментів з колійними іменами:

$ ls /bin /usr/bin

Чи схожі отримані назви на щось вже знайоме Коли ви викликаєте команду, друкуючи її імя в командному рядку (після відповідного запрошення з боку системи), система шукає файл з таким імям Зазвичай вона спочатку переглядає поточний каталог (де, ймовірно, файл не буде знайдений), потім каталог / bin і, нарешті,

/ Usr / bin У командах, подібних cat або ls, немає нічого особливого, кро ме того, що вони зібрані в декількох каталогах для простоти пошуку та адміністрування Щоб перевірити це, запустіть які-небудь з подібних програм, вказуючи їх повні шляхові імена:

$ /bin/date

Mon  Sep 26 23:29:32  EDT  1983

$ /bin/who

srm

tty1

Sep 26 22:20

cvw

tty4

Sep 26 22:40

you

tty5

Sep 26 23:04

$

Вправа 13 Введіть

$ ls /usr/games

і зробіть, що першим прийде в голову У неробочий час деякі речі виглядають забавніше ~

Перехід в інший каталог – cd

Якщо регулярно виникає необхідність роботи з інформацією з каталогу іншого користувача, можна сказати, наприклад: «Я хочу працювати не зі своїми файлами, а з файлами Мері» Таке побажання реалізується за допомогою зміни поточного каталогу командою cd:

$ cd /usr/mary

Якщо тепер в якості аргументів команд cat або pr використовувати імена файлів без вказівки повного шляху, то матися на увазі будуть файли з каталогу, що належить Мері Перехід до іншого каталогу ніяк не впливає на права доступу до файлу – якщо файл був недоступний з домашнього каталогу, то перехід в інший каталог цього факту не змінить

Зазвичай буває зручно організувати свої файли таким чином, щоб все, що відноситься до одного проекту, знаходилося в одному каталозі, окремо від інших проектів Наприклад, хтось, хто пише книгу, може помістити всі тексти в каталог під назвою book (книга) Команда mkdir створить новий каталог

$ mkdir book Створити каталог

$ cd book Перейти в нього

$ pwd Переконатися, що перехід здійснений правильно

/usr/you/book

…               Написати книгу (займе деякий час)

$ cd .           Піднятися на один рівень файлової системи

$ pwd

/usr/you

$

Дві точки . позначають батьківський каталог для поточного каталогу, тобто каталог, що знаходиться рівнем вище (ближче до кореня) Одна точка позначає поточний каталог

$ cd Повернутися в домашній каталог

поверне вас в домашній (реєстраційний) каталог

Як тільки книга опублікована, всі файли можна стерти Щоб видалити каталог book, видаліть все що містяться в ньому файли (пізніше буде розказано про те, як зробити це швидко), потім перейдіть (cd) в батьківський каталог для book і введіть:

$ rmdir  book

Команда rmdir видаляє тільки порожні каталоги

Джерело: Керниган Б, Пайк Р, UNIX Програмне оточення – Пер з англ – СПб: Символ-Плюс, 2003 – 416 с, Мул

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*