Керування файлами в linux

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Файли

Ls.png

Управління файлами

Приклад ієрархії каталогів

В ОС Linux слід розрізняти фізичну файлову систему, яка відповідає за керування дисковим простором і розміщення файлів у фізичних адресах диска та логічну файлову систему, яка забезпечує логічну структуру зберігання файлів - простір імен файлів. ОС Unix і Linux можуть працювати з різними фізичними файловими системами (Ext2, ext3, ufs), логічне ж подання файлової системи Unix/Linux структуровано. Всі файли у локальній файловій системі розташовуються у вигляді дерева, проміжні вершини якого відповідають каталогам, і листя - файлів і порожніх каталогів. Реально, на кожному логічному диску (розділі фізичного дискового пакету) розташовується окрема ієрархія каталогів і файлів. Для отримання загального дерева в динаміці використовується "монтування" окремих ієрархій до фіксованої кореневої файлової системи в якості гілок загального дерева. Самим верхом ієрархії є корінь, який має певне ім'я “/” (слеш). Далі в корені знаходяться папки з певними для кожного дистрибутива іменами (etc, home, bin, mnt, proc і т.д.).

Повне ім'я файлу, наприклад, /bin/sh означає, що в кореневому каталозі повинно міститися ім'я каталогу bin, а в каталозі bin повинно міститися ім'я файлу sh. Коротким або відносним ім'ям файлу називається ім'я, яке задає шлях до файлу від поточного робочого каталога. В кожному каталозі містяться два спеціальних імені, ім'я "." - посилання на поточний каталог, і ім'я ".." - посилання "батьківський" каталог данного поточного каталогу, тобто каталог, що безпосередньо передує даному в ієрархії каталогів. Наприклад, для структури, показаної на малюнку, доступ до зазначеного на малюнку файлу, з поточного каталогу, можливий за такого шляху: /home/usr2/file2 або за відносним іменем: ../../../usr2/file2 (якщо поточний каталог - os).


Типи файлів

ОС LINUX підтримують кілька типів файлів:

  • Звичайні файли (або регулярні) - являють собою послідовність байтів. Це текстові, виконуємі файли і т.д, Даний тип файла відображається командою ls-l у вигляді "-" (риски).
  • Каталоги - являють собою особливий вид файлів, які зберігаються у внутрішній пам'яті подібно до звичайних файлів, але їх структура підтримується самою файловою системою. Цей тип файлу відображається командою ls-l у вигляді символу "d".
  • Спеціальні файли пристроїв, бувають блокові і символьні. Цей тип файлу відображається командою ls-l у вигляді символу "b". Спеціальні файли не зберігають дані. Вони забезпечують механізм відображення фізичних зовнішніх пристроїв у імена файлів файлової системи. Кожному пристрою, підтримуваного системою, відповідає, що щонайменше, один спеціальний файл. При виконанні читання або запису по відношенню до спеціального файлу, проводиться прямий виклик відповідного драйвера пристрою. При цьому імена спеціальних файлів можна використовувати практично скрізь, де можна використовувати імена звичайних файлів.
  • link Посилання.
Даний тип файлу відображається командою ls-l у вигляді символу "l". Файлова система UNIX/LINUX забезпечує можливість зв'язування одного і того ж файлу з різними іменами. Існують жорсткі і м'які посилання.
Жорстке посилання є просто ще одним ім'ям для вихідного файлу і не являється типом файлу. Вона прописується в індексному дескриптору файлу вихідного файлу (в структурі, що зберігає метадані у файл). Після створення жорсткого посилання, неможливо розрізнити, де початкове ім'я файлу, а де посилання. Якщо ви видаляєте один з цих файлів (точніше одне з цих імен), то файл зберігається на диску (поки у нього є хоч одне ім'я-жорстке посилання). Дуже важко розрізнити початкове ім'я файлу і пізніше створені жорсткі посилання на нього. Тому жорсткі посилання завстосовуються там, де відстежувати відмінності і не потрібно. Одне з застосувань жорстких посилань полягає в тому, щоб запобігти можливість випадкового видалення файлу. Особливістю жорстких посилань є те, що вони прямо вказують на номер індексного дескриптора, а, отже, такі імена можуть вказувати тільки на файли всередині тієї ж самої файлової системи (тобто, на тому ж самому носії, на якому знаходиться каталог що містить це ім'я).
Символічні посилання теж можуть розглядатися як додаткові імена файлів, але в той же час вони представляються окремими файлами - файлами типу символічних посилань, і є самостійним типом файлу. Однак блоки даних файлу в системі подаються в одному примірнику, у файлу-посилання адреси блоків даних ті ж, що і у вихідного файлу. На відміну від жорстких посилань символічні посилання можуть вказувати на файли, розташовані в іншій файловоій системі, наприклад, на зовнішньому носії, або навіть на іншому комп'ютері. Якщо вихідний файл видалено, символічне посилання не видаляється, але стає непотрібним. Використовуйте символічні посилання в тих випадках, коли хочете уникнути плутанини, повязаної із застосуванням жорстких посилань.
Створення будь-якого посилання зовні подібно копіювання файлу, але фактично як початкове ім'я файлу, так і посилання вказують на один і той же реальний файл на диску. Тому, наприклад, якщо ви внесли зміни у файл, звернувшись до нього під одним ім'ям, ви виявите ці зміни і тоді, коли звернитесь до файлу імені-посиланням.
  • Іменований программнй канал (pipe) - один із засобів міжпроцесних взаємодій (IPC) в ОС UNIX/LINUX. Цей тип файлу відображається командою ls-l у вигляді символу "p". Именованному програмному каналу обов'язково відповідає елемент деякого каталогу.
  • Сокет (socket)- надають досить потужний і гнучкий IPC. Цей тип файлу відображається командою ls-l у вигляді символу "s". Вони можуть використовуватися для організації взаємодії програм на одному компютеру, по локальній мережі або через Інтернет, що дозволяє створювати розподілені додатки різної складності. Крім того, з їх допомогою можна організувати взаємодію з програмами, що працюють під управлінням інших операційних систем.

Команди роботи з файлами та директоріями

pwd Виводить поточний шлях
ls Виводить список файлів і каталогів по порядку
ls-laX Виводить форматований список всіх файлів і директорій, включаючи приховані
cd Перехід в домашню теку
cd /home Перехід в директорію /home
cd .. Перехід в каталог рівнем вище того, в якому зараз перебуваєте
cd ../.. Перехід в каталог двома рівнями вище того, в якому зараз перебуваєте
cd - Перехід в каталог у якому ви перебували до переходу в поточний каталог
touch /home/primer2 Створення порожнього файлу /home/primer2
cat /home/primer2 Показати вміст файлу /home/primer2
tail /var/log/messages Виводить кінець файлу. Зручно при роботі з великими файлами
head /var/log/messages Виводить перші рядки файлу
nano /home/primer2 Редагувати файл /home/primer2
sudo tee-a /home/primer2 Додавання до кінця файлу "ОР" в файл /home/primer2
cp /home/Mut@NT/primer.txt /home/primer.txt Копіює /home/Mut@NT/primer.tx у home/primer.txt
ln-s /home/Mut@NT/primer.txt /home/primer Створює символічне посилання /home/primer до файлу /home/Mut@NT/primer.txt
mkdir /home/Mut@NT/ОР Створення директорії з ім'ям ОР
rmdir /home/Mut@NT/ОР Видалення директорії з ім'ям ОР
rm-rf /home/Mut@NT/ОР Видалення директорії з вкладеними файлами
cp-la /dir1 /dir2 Копіювання директорій
mv /dir1 /dir2 Перейменування директорії
du-sh /home/Mut@NT/ Виводить на екран розмір заданої директорії. Можна використовувати для визначення розміру файлів (кількість блоків диска, зайнятих кожним файлів у вашому поточному каталозі)
tree Показує деревоподібний список файлів і тек у вашому поточному каталозі. Також підраховує їх кількість. залежно від кількості файлів підрахунок файлів може зайняти деякий час
dir Показує вміст вашого поточного каталогу в алфавітному порядку і з урахуванням регістру назв
df Виводить в консолі кількість зайнятого та вільного місця на жорсткому диску для кожного каталога системи
locate primer Пошук всіх файлів з ім'ям primer