1. Структура файлової системи і каталогів linux
Пристрій файлової системи linux дуже сильно відрізняється від пристрою в windows. Для початку, в лінуксі немає дисків C або d Один
пфизический диск (або декілька) при установці системи розбивається на каталоги та підкаталоги. Основний, кореневий каталог позначається
псимволом / (слеш) Замість файлу підкачки існує окремий розділ /swap. Кожен каталог можна форматувати в потрібну файлову систему,
пв залежності від завдань користувача. Наприклад Ext3, ReiserFS, JFS або іншу.
пВ різних дистрибутивах linux схема і призначення деяких каталогів може трохи відрізнятися.
пможна створювати свої каталоги. Наприклад, розмістити на окремому диску каталог з фільмами. В кореневому розділі він
пбудет виглядати як /films.
Опис основних каталогів і підкаталогів в linux:
/bin - В ньому знаходяться основні файли команд.
/boot - В цьому каталозі знаходиться завантажувач (Grub або Lilo) і файли, необхідні для завантаження системи.
/dev - В каталозі dev розміщуються файли описания пристроїв комп'ютера. В linux всі пристрої вважаються файлами. Навіть порти, диски, принтери - все файл.
/etc - Каталог, в якому знаходяться конфігураційні файли системи, програм, стартові сценарії.
/etc/rc.d - файли команд, що запускають програми при завантаженні системи.
/etc/passwd - у файлі зашифровані всі дані про користувачів.
/etc/fstab - у файлі міститься інформація про файлових системах, автоматично монтируемых при запуску системи
/home - Користувальницький, домашній каталог. В linux може бути безліч користувачів. Кожен користувач має свій каталог.(наприклад, /home/user) В ньому знаходяться будь-які файли користувачів до яких він має безпосередній доступ запису/видалення. Також у домашньому каталозі знаходяться користувацькі програми, настройки. Їх імена починаються на точку і виглядають, наприклад, ось так - .kde .fonts
/lib - Тут знаходяться різні бібліотеки системи, модулі ядра
/lib/firmware - невільні модулі ядра з закритою ліцензією
/lib/modules - подгружаемые модулі ядра. Наприклад драйвери пристроїв, каталогів.
/mnt - У цей каталог тимчасово монтуються різні пристрої, що підключаються. Флешки, дискети, диски
/opt - В каталог встановлюються додаткові пакети програм.
/proc - Каталог з віртуальної файлової системи. У ньому, у вигляді файлів міститься інформація про перебувають у системі процесах.
/proc/modules - у цьому файлі знаходиться інформація про список завантажених модулів ядра.
/proc/cpuinfo - детальна інформація про процесор.
/proc/meminfo - інформація про оперативної пам'яті.
/proc/devices - драйвери пристроїв вбудованих в ядро системи.
/proc/uptime - інформація про uptime системи. Тобто Час роботи без перезавантаження.
/proc/version - версія використовуваного системою ядра linux.
пвсі ці дані можна виводити в консолі за допомогою командиcat.r
Наприклад cat /proc/cpuinfo
/root - Домашній каталог адміністратора(root) системи. Використовується адміністратором у разі якщо основний каталог home по якимось причинам недоступний.
/sbin - Тут знаходяться основні програми, що виконуються root.
/tmp - Каталог для тимчасового зберігання даних програмами.
/usr - Основний каталог для установки програм. Крім програм, в ньому знаходяться файли документації, вихідні коди програм, ядра.
/usr/local - в цьому каталозі знаходяться окремо встановлені пакети програм.
/usr/src - вихідні встановлених програм і ядра.
/usr/man - файли посібників до встановлених програм.
/usr/lib - незмінні конфігураційні файли і дані програм.
/var - В каталозі var знаходяться дані які часто змінюються в процесі роботи системи. Наприклад логи, кеші програм.
/var/local - змінні дані програм, встановлених адміністратором в /usr/local.r
/var/log - логи різних системних програм.
/var/run - тимчасові файли. Інформація в них зберігається до чергової перезавантаження системи.
/var/tmp - каталог для тимчасових файлів.
2. Команди роботи з архівами
Імена упакованих файлів у більшості випадків закінчуються на:
- .tar - файл усобран утилітою tar;
- .gz - упакований файл архіватором gzip;
- .bz2 - упакований файл архіватором bzip2 (стискає ефективніше, ніж gzip).
- .tar.bz2 - файл усобран утилітою tar і упакований архіватором bzip2 .
- .tar.gzip - файл усобран утилітою tar і упакований архіватором gzip .
- .zip - zip-файлы.
- .rar - rar-файли.
Утиліта tar є однією з найбільш потужних інструментів, призначених для збереження файлів
пна магнітну стрічку або в архів на диску і для відновлення окремих файлів з архіву.
Спорідненої "tar"-утилітою є утиліта cpio (див. man cpio або cpio --help чи
info cpio), яка копіює файли в архіви і з них.
Однак, основним засобом архівування в UNIX (а, отже, і в Linux) є комплекс із двох програм - tar
gzip.
пХотя ніхто не забороняє користуватися arj, pkzip, lha, rar і т. д. - версії цих програм для Linux є загальнодоступними.
пПросто уже історично склалося, що користувачі Unix/Linux частіше застосовують саме tar і gzip, і саме в такому форматі поширюється
пбольшая частина програмного забезпечення для Unix. Тому опанувати роботою з tar і gzip - справа честі для будь-якого користувача Linux.
У користувача, який звик до архіваторам типу arj, які збирають файли в єдиний архів і відразу "стискають" їх, може виникнути
пвопрос "А навіщо використовувати дві програми?" Вся справа в тому, що tar розшифровується як Tape ARchiver, він не
псжимает дані, а лише поєднує їх у єдиний файл з послідовним доступом для подальшого запису на стрічку. За промовчанням
пархивный файл створюється на стрічковому накопичувачі, точніше на пристрій /dev/rmt0. Якщо ви хочете створити архівний файл на диску,
пто необхідно використовувати команду tar з опцією f, після якої вказується ім'я архівного файлу (детальніше опції
tar)
Приклади
# tar-cf primer.tar /home/primer.txt
|
# Створити архів tar-з ім'ям primer.tar що містить /home/primer.txt;
|
# tar-czf primer.tar.gz /home/primer.txt
|
# Створити архів tar-з стиснення Gzip по імені primer.tar.gz (утиліта tar викликає з під себе Gzip);
|
# tar-cjf primer.tar.bz2 /home/primer.txt
|
# Створити архів tar-із стисненням Bzip2 по імені primer.tar.bz (утиліта tar викликає з під себе Bzip2);
|
# tar -xf primer.tar
|
# Розпакувати архів primer.tar у поточну теку;
|
# tar-xzf primer.tar.gz;
|
# Розпакувати архів tar-з Gzip;
|
# tar-xjf primer.tar.bz
|
# Розпакувати архів tar-з Bzip2;
|
Стиснення та упаковка файлів також може виконуватися за допомогою наступних утиліт:
gzip - Стиснути файли за допомогою програми GNU Zip
gunzip - Розтиснути файли GNU Zip
compress - Стиснути файли традиційним методом Unix
uncompress - Розтиснути файли традиційним методом Unix
zcat - Стиснути/розтиснути файл через стандартні потоки вводу/виводу (gzip або compress)
bzip2 - Стиснути файли у форматі BZip
bunzip2 - Розтиснути файли BZip
zip - Стиснути файли у форматі Windows Zip
unzip - Розтиснути файли Windows Zip
rar - Стиснути файли у форматі rar
unrar - Розтиснути файли rar
Хоча програма tar створює архіви, вона, як було сказано, не стискає архіви, а просто з'єднує окремі файли в єдиний архівний файл.
Для стиснення цього файлу часто застосовують до оманду gzip.
Оскільки програма gzip не вміє зберігати в одному архіві декілька файлів, то зазвичай її застосовують для стиснення файлів,
створених програмою tar.
останнім часом все частіше замість програми gzip використовується архіватор
bzip2,
пкоторый забезпечує більш високу ступінь стиснення і працює кілька швидше, т.к. bzip2 був написаний для заміни gzip.
пНесмотря на це, gzip все ще використовується для сумісності зі старими системами.
Увага! За умовчанням і gzipі bzip2 видаляють запаковані (або розпаковані файли, якщо тільки ви не використовуєте
попцию-c. У bzip2 ви можете уникнути цього, скориставшись спеціальною опцією. У gzip еквівалентної опції немає.
У Linux/Unix є утиліти, які дозволяють переглядати запаковані файли відразу без попередньої їх розпакування.
- bzcat - перегляд упакованого файлу bzip2
- bzless - перегляд упакованого файлу bzip2
- zcat - перегляд упакованого файлу gzip
- zless - перегляд упакованого файлу gzip
3. Властивості файлу
Вміст файлів в Linux - це тільки
пполовина інформації. Кожен файл і директорія, крім іншого,
пимеют атрибути, які описують власника, розмір, права
пдоступа та іншу інформацію. Команда Is -1 виводить деякі з цих
патрибутов, а для перегляду інших атрибутів використовуються
пописаны нижче команди,з деякими з них ви вже ознакомались в попередніх роботах:
- stat - Вивести атрибути файлів і директорій
- touch - Змінити тимчасові мітки файлів або каталогів
- chown - Змінити власника файлів або каталогів
- chgrp - Змінити приналежність группедля файлів або каталогів
- chattr - Змінити розширені атрибути файлів або каталогів
- lsattr, Вивести список розширених атрибутів файлів або каталогів
У даній роботі вам належить ознайомиться з командами:
- далі - Показати, скільки місця на диску займають файли та директорії
- file - Визначити (спробувати вгадати) тип файлу
4. Пошук файлів
Linux-системи запросто можуть містити десятки і сотні тисяч
пфайлов. Як знайти конкретний файл, коли він вам знадобився?
пПервый спосіб - це упорядкувати ваші файли з теки
ппродуманной схемою, але є кілька інших способів пошуку
пфайлов, кожен з яких потрібно використовувати в залежності від
птого, що ви шукаєте. Для цього найчастіше використовуються наступні утилиты:
- find - Шукати файл в ієрархії каталогів
- slocate Створити індекс файлів і шукати рядок в цьому індексі
- which - Шукати виконувані файли у ваших каталогах (команда)
- type - Шукати виконувані файли у ваших каталогах (вбудована функція bash)
- whereis - Шукати файли, документацію і файли з вихідним кодом
пДля пошуку довільного файлу можна використовувати утиліту find ,
пкоторая наполегливо перебирає файл за файлом у всіх каталогах в
ппоисках потрібного файлу. Утиліта slocate набагато швидше, вона
посуществляет пошук в заздалегідь створеному індексі, який ви
пгенерируете у разі необхідності (Fedora генерує цей індекс
пежедневно типово).
пДля пошуку виконуваних файлів утиліти which і type перевіряють усі
пдиректории у шляху пошуку вашого командного процесора. Команда
type вбудована в командний процесор bash (і, отже,
пдоступна тільки при роботі в bash); type працює швидше which
допоможе шукати серед псевдонімів командного процесора. На відміну
піт них, команда whereis досліджує заздалегідь відомий набір
пдиректорий, а не директорії вашого шляху пошуку.
Наприклад:
find / -type f-name myfile-print - Знайти певний файл з ім'ям myfile, починаючи з кореня.
find / -type d-print - Вивести імена всіх каталогів.
slocate-U directory-о /tmp/myindex - Створення індексу конкретної директорії і всіх її піддиректорій.
5. Робота з текстом у файлах
Одна з сильних сторін Linux - це робота з текстом: обробка
птекстовых файлів (або стандартного потоку вводу) різними
ппреобразованиями. Будь-яка програма, яка читає дані з
пстандартного потоку вводу і пише дані у стандартний потік
пвывода, має відношення до попереднього розділу, але в роботах ми
прассмотрим тільки найбільш уживані і потужні з них.
Команди обробки тексту використовуються при написанні скриптів з метою автоматизації роботи з файлами
пякщо адміністрування системи.
- cut - Виділити колонки з файлу
- paste Вставити колонки
- - Перетворити символи в інші символи
- sort Сортувати рядки тексту у відповідності з різними критеріями
- uniq - Знайти ідентичні рядки у файлі
- wc - Надрукувати кількість переказів рядків, слів і байт для кожного ФАЙЛУ
- iconv - Перетворює вказані файли з однієї
пкодировки в іншу.
- diff - Пошук відмінностей між двома файлами
- join - З'єднання файлів
6. Способи об'єднання команд
Існує можливість поєднувати кілька команд в командному рядку. Це можна робити кількома способами:
Послідовне виконання
Команди виконуються одна за іншою, не залежно від результату їх виконання. Як роздільник виступає символ точки
пс комою«;»).
як приклад можна розглянути складову команду du-sh; date , яка виводить на екран вміст домашньої директорії,
па потім поточні дату і час.
Умовне виконання (І)
Перевіряється код завершення першої програми, якщо він дорівнює 0, проводиться виконання другої програми, і так далі.
Таким чином, остання команда виконається тільки при успішному завершенні всіх попередніх. Як роздільник виступають
пдва амперсанда («&&»).
як приклад можна розглянути складову команду test-r /tmp/txt && cp /tmp/txt , яка перевіряє
пвозможность читання файлу /tmp/txt і у разі успіху, копіювати цей файл у локальну теку.
Умовне виконання (АБО)
Перевіряється код завершення першої програми, якщо він не дорівнює 0, проводиться виконання другої програми, і так далі.
постання команда буде працювати тільки якщо жодна з попередніх не закінчилася успішно. Як роздільник виступають дві
пвертикальный риси («||»).
як приклад можна розглянути складову команду test-d /tmp/dir || mkdir /tmp/dir, яка перевіряє
псуществование директорії /tmp/dir і якщо її немає, створює її.
Конвеєр
Вище показано, як використовувати команду sort як фільтра.
пякщо цьому передбачається, що ви звідки-то отримали дані у файл, або ввели дані з клавіатури своїми власними руками.
пА що, якщо дані, які ви хочете відсортувати, є вихідними даними іншої програми, наприклад, такий як ls?
пякщо ви використовуєте при сортуванні опцію -r, дані будуть розташовані в порядку, зворотному лексикографічним.
пякщо ви бажаєте отримати перелік файлів вашого каталогу у зворотному порядку, один із способів зробити це буде:
/home/user/papers# ls
english-list
history-final
masters-thesis
notes
/home/user/papers# ls > file list-(перенаправлення резуоьтата з stdout у файл )file-list
/home/user/papers# sort-r file-list
notes
masters-thesis
history-final
english-list
/home/user/papers#
Тут ми зберегли результат роботи команди ls у файлі, а потім виконали sort-r над цим файлом.
пНо це вимагає створення тимчасового файлу для збереження результату роботи ls.
пвихід з положення дає "конвеєр" (англ., pipeline). Конвеєр"|")- це ще одна чудова властивість , яка дозволяє
псвязывать послідовність команд у конвеєр, де stdout першої команди надсилається прямо на stdin
пвторой команди і так далі. У нашому прикладі ми хочемо послати stdout команди ls stdin
команди sort. Символ "|" уособлює конвеєр:
/home/user/papers# ls | sort-r
notes
masters-thesis
history-final
english-list
/home/user/papers#
Ця команда набагато коротше і, очевидно, простіше набирається. Інший корисний приклад. Команда
/home/user/papers# ls /usr/bin
пвыдает на дисплей довгий список імен файлів, більшість з яких дуже швидко промайне на екрані,
пнатисніть ви встигли прочитати їх. Давайте підключимо до перегляду переліку імен файлів каталогу /usr/bin команду more.
/home/user/papers# ls /usr/bin | more
Тепер ви можете посторінково гортати файл у своє задоволення.
пТакже можна зв'язати в конвеєр більш, ніж дві команди. Команда представляє з себе фільтр, який відображає
перші рядки вхідного потоку (тут, що прийшов по конвеєру). Якщо ми хочемо відобразити останнє ім'я поточного каталогу,
пупорядоченного за алфавітом, ми можемо написати:
/home/user/papers# ls | sort-r | head -1
notes
/home/user/papers#
де head -1 просто видає перший рядок вхідного потоку (одержуваногов даному випадку це відсортований у зворотному порядку
перелік імен файлів поточного каталогу, виданих командою ls).
Опис файлу /etc/passwd, /etc/shadow і /etc/groups