Файли та каталоги Linux Mint

Одна з головних концепцій Unix-систем говорить, що всі є файлом, в тому числі і будь-який пристрій, підключений до компютера Каталог, що містить файли, також є файлом Виходячи з цього однозначно сказати, чим є

/ Home / grinder / temp – файлом, каталогом або посиланням, – не можна Щоб уникнути двозначності, іноді каталог відзначають ще однієї косою рисою / home / grinder / temp / Але трохи докладніше про це ми поговоримо трохи далі

Літератури для тих, хто хоче розібратися більш глибоко в цьому питанні, предостатньо, тому торкнемося лише основні моменти Файл – одне з найважливіших понять Linux Файлом в цій системі є все

УВАГА

На відміну від Windows на Linux регістр в імені файлу має значення, тому file і File – це два різних файлу

Будь-який пристрій, підключений до системи, інформація, що знаходиться на жорсткому диску, обовязково представлена ​​файлом Але, хоча для роботи з усіма файлами використовуються звичайні команди, всередині файли абсолютно різні, і текстовий файл істотно відрізняється від файлу, що представляє пристрій Каталог також є файлом і містить посилання на інші файли і каталоги Щоб переконатися в цьому, досить подивитися «всередину» за допомогою будь-якого шістнадцятирічного редактора

УВАГА

В імені файлу можна використовувати символи будь-якої мови, в тому числі і російського Але від використання деяких символів, застосовуваних командною оболонкою, краще утриматися: *, \, &, <,>, , (, ), |, Знаків пробілу і табуляції

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

ПРИМІТКА

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

Крім інформації про розташування файлу каталог містить посилання на метадані, що дозволяють проводити маніпуляції з цими файлами Ще однією

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

УВАГА

Якщо надалі при описі команд, що вводяться з консолі, буде використовуватися знак долара ($), значить, для виконання цієї команди досить прав звичайного користувача, а якщо решітка (#) – потрібні права root

Наявність розширення дозволяє користувачеві та програмі швидко визначити, якого типу дані знаходяться всередині файлу Але, як і в Windows, наявність розширення – це тільки угода про імя файлу, але зовсім необовязково, що всередині знаходиться саме цей тип даних Багато додатків, наприклад файлові менеджери Nautilus або Konqueror, при аналізі файлів у відкритому каталозі визначають тип вмісту файлу на підставі самих даних Це легко перевірити

УВАГА

У дистрибутиві Linux Mint, щоб користувач міг використовувати sudo, він повинен входити в групу admin Перший створений при установці користувач автоматично в неї заноситься

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

Тип вмісту будь-якого файлу можна перевірити за допомогою утиліти, яка так і називається – file

$   fil e    /

/: directory

$ file /bin/bash

/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 220, dynamically linked (uses shared libs), for GNU/Linux 220, stripped

Окрім команди file дізнатися тип файлу можна за допомогою команди ls-l або

stat (рис 42) Висновок ls покаже таку інформацію

$ ls -l /dev/

crw-rw     1 root audio 14, 4 2008-05-01 10:55 audio

drwxr-xr-x 3 root root 60 2008-05-01 13:54 bus

118    Глава 4 Linux Mint під капотом

lrwxrwxrwx 1 root root 3 2008-05-01 13:55 cdrom -&gt hdc brw-rw—1 root disk 3, 0 2008-05-01 13:54 had

Рис 41 Висновок файлів по типу вмісту в Nautilus

Рис 42 Висновок утиліти stat

Перша буква якраз і показує тип файлу Це може бути:

•&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp (Тире) – звичайний файл з одними даними (текстовий, графічний, мультимедійний або виконуваний файл, файл бази даних тощо), для операційної системи такі файли – просто послідовність байт

•&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp d – Каталог (англ directory)

• l – символічна посилання (англ link)

• b – файл блочного пристрою (англ block)

• с – файл символьного пристрою (англ character)

• f – файл FIFO або іменований канал

• s – сокет (англ socket)

Із звичайними файлами і каталогами все ясно Розберемо особливості інших типів файлів

В операційній системі Microsoft Windows існує поняття ярлика, коли на будь-який файл можна зробити повязану посилання У Linux теж є така можливість Виглядає вона наступним чином Деякі метадані і імя файлу зберігаються в каталозі, тобто виходить, що файл існує незалежно від того, як його називають, це дозволяє одному файлу мати кілька імен Файлові системи (як і в Windows, починаючи з Windows 2000) підтримують два типи посилань Символічна посилання є таким собі аналогом ярлика (за призначенням, але не структурі) Усередині такого файлу міститься посилання на інший файл При видаленні основного файлу посилання перестає працювати, так як показує на неіснуючий обєкт Символічні посилання використовуються для більш зручної організації файлів Наприклад, в деяких дистрибутивах розробники не повністю дотримуються FHS, але за допомогою символічних посилань імітують потрібну структуру Інший варіант – імітація більш ранніх версій бібліотек

ПРИМІТКА

Можна створювати символічне посилання не тільки на файл, а й на каталог

Деякі програми жорстко вимагають певну версію бібліотек, в нових всі функції підтримуються для зворотної сумісності, тому замість установки двох варіантів використовують один, але з різним імям Символічні посилання в команді ls-l позначаються буквою l Крім того, за допомогою стрілки вказується оригінальний файл, на який робиться ця посилання (див вище висновок команди по тексту) У відміну від жорстких посилань символічні можна створювати на файл, який не існує Розташування файлів значення не має Створюються символічні посилання за допомогою команди ln з ключем s Наприклад,

створимо символічне посилання з імям symlinks на файл file:

$ ln -s file /home/grinder/symlink

Перевіряємо:

$ ls -l /home/grinder/symlink

lrwxrwxrwx 1 grinder grinder 7 2010-05-01 20:58 /home/grinder/ symlink -&gt file

Оскільки символічна посилання – це не файл, а шлях до файлу, розмір файлу символічного посилання зазвичай невеликий, у нашому прикладі всього 7 байт Права доступу створеної посилання не містять обмежень (про правах доступу далі у розділі), що видно з рядка rwxrwxrwx Можливість роботи з файлом, на який вказує посилання, буде визначатися правами доступу самого файлу Тому не можна створити символічну посилання на захищений файл і отримати доступ до нього

ПРИМІТКА

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

Жорсткі посилання, на відміну від символічних, повністю рівноправні, так як фактично це два імені одного і того ж файлу Інформація про кількість посилань міститься безпосередньо в метаданих файлу При видаленні однієї з посилань інші повністю працездатні Поки є хоч одне посилання, файл буде існувати Однак жорстка посилання має єдине обмеження – її створення можливо тільки в межах одного логічного розділу диска Створюються посилання за допомогою команди ln, без аргументів:

$ ln file /home/grinder/hardlink

Кількість жорстких посилань на файл можна побачити у другому стовпці виводу команди ls:

$ ls -l /home/grinder/hardlink

-rw-r–r-2 grinder grinder 52219904 2010-05-22 14:33 /home/ grinder/hardlink

У нашому прикладі показано кількість посилань 2 Розмір жорсткої посилання збігається з розміром початкового файлу, але фізично файл тільки один, тому, незалежно від кількості посилань на нього, він займає на диску рівно стільки, скільки й вихідний Права доступу створеної посилання повністю повторюють права оригінального файлу

У Linux жорсткі посилання не рідкість Часто розробники дають два імені своїй програмі – залежно від того, під яким імям вона запущена, вона буде мати різну функціональність Дізнатися такі програми-близнюки можна, тільки проаналізувавши номер inode за допомогою ключа i команди ls Наприклад, команда gzi p призначена для стиснення та розпакування файлів на зразок ZIP, тільки з використанням кодування Лемпеля – Зива (LZ77) У Linux є окрема утиліта для розпакування, дивимося на номери inode:

$ ls -i /bin/gunzip /bin/gzip

25256 /bin/gunzip  25256 /bin/gzip

Як бачите, номер inode у цих двох файлів збігається, тобто насправді це один файл Висновок команди ls-l показує наявність чотирьох жорстких посилань на файл / bin / gzip Давайте знайдемо інші, використавши як фільтра виведення команду gre p з номером потрібного inode

$ ls -i /bin/* | grep 25256 25256 /bin/gunzip

25256 /bin/gzip

25256 /bin/uncompress 25256 /bin/zcat

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

Сподіваюся, з посиланнями все ясно Тепер переходимо до файлів пристроїв Хоча в багатьох статтях файли пристроїв називають драйверами, це дещо неправильно Насправді це проміжний вузол, за допомогою якого програми обмінюються даними з драйверами Сам драйвер або входить до складу ядра, або реалізований як модуль ядра

УВАГА

Права доступу файлу пристрою визначають можливість його використання користувачем або групою Цей момент дуже важливий Наприклад, якщо ви можете зєднуватися з Інтернетом або записувати інформацію з допомогою CD / DVD-приводу тільки під суперкористувачем, це означає, що ви просто не маєте потрібних прав

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

$   ls   -l    /dev/sd a

brw-rw            1   roo t   dis k   8 ,    0   2010-05-2 2   16:2 0    /dev/sd a

Буква b у виведенні команди ls якраз і показує на блоковий пристрій Але деякі пристрої, наприклад клавіатура, передають дані байт за байтом Такі пристрої називають символьними До символьним крім клавіатури належать термінал і розділи жорсткого диска без файлової системи Файлу символьного пристрою відповідає буква с (рис 43)

Рис 43 Блокове і символьне пристрій в Linux

Читання і запис даних в блокових пристроях буферизирует

Файли FIFO (від англ First Input First Output – «перший увійшов, першим вийшов»), або іменовані канали, що позначаються у виведенні буквою f, використовуються для передачі даних від однієї програми до іншої Особливість FIFO полягає в тому, що потік інформації може йти тільки в одному напрямку Одна програма відкриває файл FIFO тільки на запис, а інша – тільки на читання І в тому випадку, коли програмам необхідний двонаправлений канал обміну інформацією, доведеться відкривати два FIFO Хоча альтернатива є: використання мережі або спеціальних файлів – сокетів (від англ Socket – «розетка») При налаштуванні різного типу серверів або програм ви можете зіткнутися з обома варіантами, і доведеться вибирати, який із способів використовувати Наприклад, демон clamd антивіруса ClamAV або система управління базами даних MySQL можуть використовувати для обміну даними як мережа, так і сокет Мережа зазвичай застосовують для обміну даними тоді, коли спілкуються програми знаходяться на різних компютерах, хоча і не завжди Сокет в чомусь схожий на FIFO, тільки дані передаються в обох напрямках

$ ls -al /dev/* | grep ^s

srw-rw-rw 1 root  root  0 2008-06-25 13:21 /dev/log

У цьому прикладі висновок команди ls-al був перенаправлений на вхід утиліти grep, яка призначена для пошуку рядків із заданими параметрами Як завдання grep отримала вивести всі рядки, що починаються на s (знак ^ означає привязку до початку рядка)

Є ще один момент Оскільки спеціальний файл позначає фізичний пристрій, у нього відсутнє поняття розміру Замість цього такі файли позначаються двома числами major (старший) і minor (молодший), які для кожного

пристрої будуть унікальними При цьому major показує на тип пристрою, a minor – на конкретний пристрій Наприклад, у виведенні команди

$    ls    -l    /dev/sd a

brw-rw –1   roo t   dis k   8 ,    0   2010-06-2 5   16:2 0    /dev/sd a

цифра 8 відповідає major, a 0 – minor Якщо подивитися номери для файлу / dev / sda1, який є першим розділом на цьому диску, то виявимо, що цифра

major залишилася колишньою, а номер minor змінився і став дорівнює 1

Найцікавіше, що, якщо потрібні файли пристроїв система не створила автоматично, адміністратор це може зробити вручну Для цього застосовується спеціальна команда mknod (від англ Make node – «створити вузол ») або скрипт MAKEDEV

ПРИМІТКА

Повністю формат команди і додаткові ключі можна переглянути в довідковому керівництві, викликається командою man mknod

Щоб використовувати mknod, потрібно знати major і minor числа пристрою Формат команди такий:

mknod / dev / имя_файла {з | b} MAJOR MINOR

Букви с і b дозволяють вказати, який пристрій потрібно створити: символьне або блочне Цифру major можна дізнатися, переглянувши список вже наявних пристроїв або проаналізувавши висновок команди lsdev Але основним джерелом інформації за номерами major і minor є файл devicestxt, який знаходиться в каталозі Documentation вихідних текстів ядра

Джерело: Яремчук С А Linux Mint на 100% – СПб: Питер, 2011 – 240 е: ил – (Серія «На 100%»)

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


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

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

Ваш отзыв

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

*

*