Керування файлами в linux
Файли
Управління файлами
В ОС 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 |