Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Команды для работы с файлами и каталогами

Принцип жесткости архитектуры | Программное обеспечение | Системное ПО | F4 Правка | F8 Удалить | Поиск файлов | Изменение частоты мерцания курсора | Глобальные сети | Добавление строки сверху или снизу | Вырезание и вставка текста |


Читайте также:
  1. HELP Имя команды
  2. I. ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ
  3. I.6. Работа и теплота. Свойства работы и теплоты.
  4. II Требования охраны труда перед началом работы.
  5. II этап работы
  6. II. Взаимосвязь социальной политики и социальной работы
  7. II. Требования к оформлению текста дипломной работы.

У попередніх розділах ми вже згадували деякі команди для роботи з файлами і каталогами: pwd, cd, ls, ln, chmod. У цьому розділі розглянемо (дуже стисло) ще декілька часто використовуваних команд.

4.6.1. Команди chown і chgrpЦі команди служать для зміни власника файлу і групи файлу. Виконувати зміну власника може тільки суперкористувач, зміну групи може виконати сам власник файлу чи суперкористувач. Для того, щоб мати право перемінити групу, власник повинен додатково бути членом тієї групи, якій він хоче дати права на даний файл. Формат цих двох команд аналогічний:[Root] # chown vasja імені-файлу[Root] # chgrp usersgrp назва_пакунка

4.6.2. Команда mkdirКоманда mkdir дозволяє створити підкаталог у поточному каталозі. В якості аргументу цій команді треба дати ім'я створюваного каталогу. В знову створеному каталозі автоматично створюються два записи:. (Посилання на цей самий каталог) і.. (Посилання на батьківський каталог). Щоб створити підкаталог, ви повинні мати в поточному каталозі право запису. Можна створити підкаталог не в поточному, а в якомусь іншому каталозі, але тоді необхідно вказати шлях до створюваного каталогу:[User] $ mkdir / home/kos/book/glava5/part1Команда mkdir може використовуватися з наступними опціями:-M mode - задає режим доступу для нового каталогу (наприклад,-m 755);-P - створювати зазначені проміжні каталоги (якщо вони не існують).

4.6.3. Команда catКоманда cat часто використовується для створення файлів (хоча можна скористатися і командою touch). По команді cat на стандартний висновок (тобто на екран) виводиться вміст зазначеного файлу (чи декількох файлів, якщо їхні імена послідовно задати як аргументи команди). Якщо висновок команди cat перенаправляти у файл, то можна одержати копію якогось файлу:[User] $ cat file1> file2Власне, первісне призначення команди cat саме і припускало перенапрямок висновку, так як ця команда створена для конкатенації, тобто об'єднання декількох файлів в один:[User] $ cat file1 file2... fileN> new-fileСаме можливості перенаправлення вводу і виводу цієї команди і використовуються для створення нових файлів. Для цього на вхід команди cat направляють дані зі стандартного введення (тобто з клавіатури), а висновок команди - у новий файл:[User] $ cat> newfileПісля того, як ви надрукуєте усе, що хочете, натисніть комбінацію клавіш <Ctrl> + <D> і все, що ви ввели, буде записане в newfile. Звичайно, таким чином створюються, в основному, короткі текстові файли.

4.6.4. Команда cpХоча для копіювання файлів іноді користаються командою cat, але в Linux існує для цього спеціальна команда cp. Її можна застосовувати в одній з двох форм:[User] $ cp [options] source destination[User] $ cp [options] source_directory new_directoryУ першому випадку файл або каталог source копіюється, відповідно, у файл або каталог destination, а в другому випадку файли, що містяться в каталозі source_directory копіюються в каталог new_directory. Для копіювання треба мати права на читання файлів, які копіюються, і права на запис у каталог, в який виробляється копіювання.Якщо в якості цільового вказується існуючий файл, то його вміст буде затерто, тому при копіюванні треба дотримувати обережності. Втім, можна використовувати команду cp з опцією-i, тоді перед перезаписом існуючого файлу буде запитуватися підтвердження (дуже рекомендую вам завжди використовувати цю опцію!).

4.6.5. Команда mvЯкщо вам необхідно не скопіювати, а перемістити файл з одного каталогу в інший, ви можете скористатися командою mv. Синтаксис цієї команди аналогічний синтаксису команди cp. Більш того, вона спочатку копіює файл (чи каталог), а тільки потім видаляє вихідний файл (каталог). І опції в неї такі ж, як у cp. (Прімеч.11a)Команда mv може використовуватися не тільки для переміщення, але і для перейменування файлів і каталогів (тобто переміщення їх усередині одного каталогу). Для цього треба просто задати як аргументи старе і нове ім'я файлу:[User] $ mv oldname newnameАле врахуйте, що команда mv не дозволяє перейменувати відразу кілька файлів (використовуючи шаблон імені), так що команда mv *. Xxx *. Yyy не буде працювати.При використанні команди mv, також як і при використанні cp, не забувайте застосовувати опцію-i для того, щоб одержати попередження, коли файл буде перезаписуватися.

4.6.6. Команди rm і rmdirДля видалення непотрібних файлів і каталогів в Linux служать команди rm (видаляє файли) і rmdir (видаляє порожній каталог). Для того, щоб скористався цими командами, ви повинні мати право запису в каталозі, у якому розташовані файли, що видаляються або каталоги. При цьому повноваження на зміну самих файлів не обов'язкові. Якщо хочете перед видаленням файлу одержати додатковий запит на підтвердження операції, використовуйте опцію-i.Якщо ви спробуєте використовувати команду rm (без всяких опцій) для видалення каталогу, то буде видане повідомлення, що це каталог, і видалення не відбудеться. Для видалення каталогу треба видалити в ньому усі файли, після чого видалити сам каталог за допомогою команди rmdir. Однак можна видалити і непорожній каталог із усіма вхідними в нього підкаталогами і файлами, якщо використовувати команду rm з опцією-r.Якщо ви дасте команду rm *, то видалите усі файли в поточному каталозі. Підкаталоги при цьому не втечуть. Для видалення як файлів, так і підкаталогів поточного каталогу треба теж скористатися опцією-r. Однак завжди пам'ятайте, що в Linux немає команди відновлення файлів після їхнього видалення (навіть якщо ви спохватилися відразу ж після помилкового видалення файлу або каталогу)!Так що двічі подумайте до видалення чого-небудь і не зневажайте опцією-i.

4.6.7. Команди more і lessКоманда cat дозволяє вивести на стандартний висновок (на екран) уміст будь-якого файлу, однак вона використовується для цих цілей дуже рідко, хіба що для висновку дуже невеликих по обсязі файлів. Справа в тому, що вміст великого файлу миттєво проскакує на екрані, і користувач бачить тільки останні рядки файлу. Тому cat використовується в основному по її прямому призначенню - для конкатенації файлів, а для перегляду вмісту файлів (звичайно, текстових) використовуються команди more і less (чи текстові редактори).Команда-фільтр more виводить вміст файлу на екран окремими сторінками, розміром саме в цілий екран. Для того, щоб побачити наступну сторінку, треба натиснути на клавішу пробілу. Натискання на клавішу <Enter> призводить до зміщення на один рядок. Крім клавіш пробілу і <Enter> в режимі паузи ще деякі клавіші діють як керуючі (наприклад, клавіша <B> повертає вас на один екран назад), але ми тут не будемо приводити повного їхнього переліку, як і переліку опцій команди. Вам для початку треба ще тільки запам'ятати, що вийти з режиму перегляду можна за допомогою клавіші <Q>, тому що якщо ви цього не знаєте, то вам доведеться довго і нудно натискати пробіл, поки ви не доберетеся до кінця довгого файлу. Про всі опціях команди more ви можете прочитати в інтерактивному керівництві man чи info.Утиліта less, розроблена в рамках проекту GNU, містить усі функції і команди керування висновком, наявні в програмі more, і деякі додаткові, наприклад, дозволяє використовувати клавіші управління курсором (<Стрілка нагору>, <Стрільця вниз>, <PgUp>, <PgDown >) для переміщення по тексту. Згадайте, ми вже говорили про це, коли розглядали інтерактивну підказку man.Команди more і less дозволяють робити пошук підрядка в просматриваемом файлі, причому команда less дозволяє робити пошук як у прямому, так і в зворотному напрямку. Для організації пошуку рядка символів string треба набрати в командному рядку програми в нижній частині екрана (там, де двокрапка) / string. Якщо шукана стрічка буде знайдена, буде відображений відповідний шматок тексту, причому знайдений рядок буде знаходитися в самому верху екрана.

4.6.8. Команда find і символи шаблонів для імен файлівЩе однією часто використовуваною командою для роботи з файлами в Linux є команда пошуку потрібного файлу find. Команда find може шукати файли по імені, розміру, даті створення або модифікації і деяким іншим критеріям.Загальний синтаксис команди find має наступний вигляд:find [спісок_каталогов] критерій_пошукуПараметр "спісок_каталогов" визначає, де шукати потрібний файл. Найпростіше задати як початковий каталогу пошуку кореневий каталог /, однак, у такому випадку пошук може затягтися дуже надовго, так як буде проглядатися вся структура каталогів, включаючи змонтовані файлові системи (у тому числі мережні, якщо такі є). Можна скоротити обсяг пошуку, якщо задати замість одного кореневого каталогу список з декількох каталогів (природно, тих, в яких може знаходитися шуканий файл):[User] $ find / usr / share / doc / usr / doc / usr / locale / doc-name instr.txtПочатком "крітерія_поіска", що визначає, що саме повинна шукати програма find, вважається перший аргумент, що починається на "-", "(", ")" ', "," чи "!". Всі аргументи, що передують "крітерію_поіска", трактуються як імена каталогів, у яких треба робити пошук. Якщо не зазначено жодного шляху, пошук виробляється тільки в поточному каталозі і його підкаталогах.Найчастіше пошук проводиться по іменах файлів, як це показано в попередньому прикладі, тобто "критерій_пошуку" задається як "-name ім'я_файлу". Замість опції-name можна використовувати опцію-path, тоді команда буде шукати збігу в повному імені файлу, із зазначенням шляху. Наприклад, команда[User] $ find. -Path '. / Sr * sc'знайде в поточному каталозі підкаталог '. / src / misc'. Замість повного імені файлу або каталогу в цьому прикладі використаний так званий "шаблон імені". Оскільки шаблони імен файлів можуть використовуватися не тільки з командою find, але і з багатьма іншими командами (включаючи вже розглянуті команди chmod, chown, chgrp, cp, rm, cat, mv), те правилам складання шаблонів варто приділити деяка увага.Найчастіше шаблони імен файлів будуються за допомогою спеціальних символів "*" і "?". Значок "*" використовується для заміни довільної рядки символів. У Linux"*" - Відповідає усім файлам, за винятком схованих;". *" - Відповідає всім схованим файлам (але також поточному каталогу "." І каталогу рівнем вище "..": не забувайте про це!);"*. *" - Відповідає тільки тим файлам і каталогам, що мають "." в середині імені, чи закінчуються на крапку;"P * r" - відповідає і "peter" і "piper";"* C *" - відповідає і "picked" і "peck".Значок? замінює один довільний символ, тому index?. htm буде відповідати іменам index0.htm, index5.htm і indexa.htm.Крім "*" і "?" в Linux при завданні шаблонів імен можна використовувати квадратні дужки [], у яких дається або список можливих символів, або інтервал, у який повинні попадати можливі символи. Наприклад, [abc] * відповідає всім іменам файлів, що починається з a, b, c; * [I-N1-3] відповідає файлам, імена яких закінчуються на I, J, K, L, M, N, 1, 2, 3.А тепер повернемося до команди find і розповімо докладніше про те, які критерії пошуку можливі.

4.6.9. Команда split - розбиваємо файл на кілька частинІноді буває необхідно розбити один великий файл на декілька файлів меншого обсягу. Для прикладу розглянемо ситуацію, коли ви хочете перенести на свій домашній комп'ютер файл song.mp3 формату "MP3", розміром в 4,894,425 байт. Можливості перекачати цей файл по мережі у вас немає, і єдино можливий спосіб перенесення - скористатися дискетами. Але, оскільки на одну дискету файл не поміщається, потрібно розбити його на кілька маленьких файлів, а потім "зібрати" знову. Для вирішення цього завдання можна скористатися командою split.Команда split копіює файл, розбиваючи його на окремі файли заданої довжини. В якості аргументів їй треба вказати ім'я вихідного файлу і префікс імен вихідних файлів. Імена вихідних файлів будуть складатися з цього префікса і двох додаткових букв `aa ',` ab', `ac 'і т. д. (без пробілів і крапок між префіксом і літерами). Якщо префікс імен файлів не заданий, то за умовчанням використовується 'x', так що вихідні файли будуть називатися `xaa ',` xab' і т. д..Крім аргументів можна задати опцію-b, що визначає розмір вихідних файлів в байтах. Слідом за-b повинно стояти число, а за ним - буква k (що показує, що розмір вихідного файлу вказаний в кілобайтах) або m (значить розмір заданий в мегабайтах). Якщо опція не задана, то за умовчанням розмір вихідних файлів приймається рівним 1 Мбайт (Прімеч.11b). Таким чином, щоб перенести на дискетах файл song.mp3 треба спочатку дати команду[User] $ split-b1400k song.mp3 song.скопіювати отримані файли song.aa, song.ab, song.ac, song.ad, song.ae на окремі дискети, перенести їх на домашній комп'ютер, скопіювати до якоїсь теки і відновити вихідний файл за допомогою команди[User] $ cat song. *> Song.mp3після чого можна видалити тимчасові файли song.xx.

4.6.10. Порівняння файлів і команда patchВи не помічали, що задача порівняння вмісту двох різних файлів виникає при роботі з комп'ютером дивно часто? Звичайно, адже так легко скопіювати файл, а потім забуваєш, яка ж з версій новіше або якісніше (по одному автору веденим критеріям). Так що інструменти для порівняння файлів просто необхідні і Linux такі інструменти надає.Найпростіший з них - команда cmp. Ця команда просто порівнює вміст двох файлів по-байтних:[User] $ cmp file1 file2Якщо файли повністю збігаються, вона мовчки закінчує свою роботу (відбувається повернення до командного рядка без будь-яких додаткових повідомлень), а якщо файли розрізняються, видаються номер рядка та номер байта в рядку, де має місце перше відмінність.Звичайно, інформації, що видається командою cmp, замало для того, щоб прийняти, наприклад, рішення про те, який з двох файлів нам більш цінний. Тому варто скористатися командою diff для отримання повного звіту про те, які ж відмінності в цікавлять нас файлах. Для отримання звіту достатньо вказати команді, які саме файли порівнювати:[User] $ diff paper.old paper.newЗвіт про виявлені розходження буде виданий на стандартний вихід. Природно, його краще перенаправити у файл:[User] $ diff paper.old paper.new> paper.diffДля оцінки версій одного і того ж файлу більш зручна може виявитися команда sdiff, яка видає результат порівняння у вигляді двох стовпців, розділених пробілами. Якщо рядки з однаковими номерами в файлах розрізняються, то у виведенні команди sdiff вони розділені вертикальною рисою |. Якщо рядок є тільки в першому файлі, вона відзначена знаком <. Відповідно, рядок, що зустрічається тільки в другому файлі, позначена знаком>.Існує також команда diff3, яка дозволяє порівняти відразу 3 файла.Але все ж найбільш часто використовується традиційна для UNIX-систем команда diff. Ця її затребуваність пояснюється тим, що створюваний нею звіт про відмінності двох файлів може бути використаний командою patch. Найчастіше ці можливості використовуються при розповсюдженні оновлень програмного забезпечення. Припустимо, що деякий програмний додаток було розіслано користувачам у вигляді файлу program.c, що містить вихідний код програми на мові Сі. Після цього розробник вніс до програми деякі виправлення і зберіг текст у вигляді файлу program.c.new. Потрібно довести виправлений текст програми до користувачів. Очевидно, що користувачам достатньо повідомити тільки виправлення, тобто звіт про зміни, створюваний по команді[User] $ diff program.c program.c.new> program.c.diffПриродно, обсяг файлу program.c.diff істотно менше обсягу файлу program.c.new, так що можна було б отримати істотну економію на передачу файлів, якщо відправляти користувачам тільки файл program.c.diff (адже обсяги сучасних програмних додатків складають десятки мегабайт). Однак користувачі повинні мати можливість внести ці виправлення в наявну в них версію програми. Цю задачу дозволяє вирішити команда patch. Маючи файли program.c і program.c.diff, користувач може дати команду[User] $ patch program.c program.c.diff> program.c.newв результаті виконання якої він отримає файл program.c.new.

49. Файлова система Linux організована у вигляді ієрархічної структури каталогів, на вершині якої розташований кореневий каталог (/). Структура каталогів не прив'язана до конкретного пристрою зберігання інформації (диску). Вона може розташовуватися на двох або більше фізичних дисках і може включати каталоги з інших комп'ютерів мережі. У кожен момент часу один каталог є поточним (робочим). Положення цього каталогу у файловій системі задаетсяего повним (абсолютним) шляхом (наприклад, / home / suzanne / Documents / Essays). У робочому каталозі можна використовувати і відносні шляхи. Наприклад, перебуваючи в каталозі / home / suzanne / Documents, ви можете ввести команду cd Essays для переходу в каталог / home / suzanne / Documents / Essays. Імена каталогів і використовувані в них символи:. Поточний робочий каталог.. Батьківський каталог ~ Домашній каталог поточного користувача / Кореневий каталог.. / Dir Інший підкаталог батьківського каталогу / Dir1/dir2/dir3/dir4 Повний шлях dir4 Відносний шлях Щоб звернутися до домашнього каталогу з командного рядка, можна скористатися змінної оточення $ HOME або символом тильди (~). Символ тильди можна використовувати і для ідентифікації домашнього каталогу іншого користувача системи. Наприклад, запис ~ chris буде інтерпретована командною оболонкою як домашній каталог користувача з ідентифікаційним іменемchris (найімовірніше, це буде каталог / home / chris). Для ідентифікації каталогів в командному рядку можна використовувати символ крапки (.), Що позначає поточний робочий каталог; символ "дві точки" (..), що позначає каталог, розташований на один рівень вище поточного робочого каталогу; та змінну оточення $ OLDPWD, відповідну каталогу, який був поточним до моменту останньої зміни каталогу. Стандартна структура каталогів: / Кореневий каталог. Містить найважливіші файли для запуску системи і служить батьківським каталогом для всієї структури / Bin У даному каталозі зберігаються найбільш поширені користувальницькі команди Linux, такі як ls, sort, date, chmod та ін / Boot Файли, використовувані при завантаженні системи / Dev Файли цього каталогу являють собою "точки" доступу до різних пристроїв системи, в число яких входять пристрої терміналів (tty *), дисководи (fd *), жорсткі диски (hd *), диски в оперативній пам'яті (ram *) і накопичувачі CD-ROM (cd *). (Як правило, користувачі здійснюють доступ до цих пристроїв безпосередньо через файли пристроїв.) / Etc Файли системних налаштувань і сценаріїв. Серед найбільш важливих файлів - скрипти ініціалізації системи. Ці скрипти зберігаються в каталогах / etc/rc0.d, / etc/rc1.d, / etc/rc2.d і т.д, відпо рівням виконання системи (run level). Завантаження системи управляється скриптами / etc / rc і / etc / rc.local. Тут знаходиться підкаталог default, де зберігаються параметри за замовчуванням багатьох команд / Home У цьому каталозі зберігаються домашні каталоги користувачів системи, які мають обліковий запис / Lib Бібліотеки загального користування, в т.ч. бібліотечні файли мови C. Стандартні назви бібліотечних файлів мають вигляд lib *. So, де * - це один або більше символів, що визначають вміст бібліотеки. / Lost + found Каталог "втрачених" файлів. Помилки цілісності файлової системи, що виникають при неправильному останове Linux або апаратні збої, можуть призвести до появи т.зв. "Безіменних" файлів - структура і вміст файлу є правильними, однак для нього відсутня ім'я в якомусь із каталогів. Програми перевірки та відновлення файлової системи поміщають такі файли в каталог / lost + found під системними числовими іменами. / Mnt Надає каталоги для підключення різних пристроїв, таких як віддалені файлові системи та знімні пристрої (накопичувачі CD-ROM, дисководи і т.д.) / Opt Каталог, в який встановлюється комерційне програмне забезпечення / Proc Віртуальна файлова система, що зберігає інформацію ядра і процесів / Root Домашній каталог суперкористувача / Sbin Важливі системні утиліти, використовувані при завантаженні / Tmp Місце для зберігання тимчасових файлів / Usr Місце для зберігання файлів, які повинні бути доступні в межах системи, включаючи користувальницькі утиліти і програми (/ usr / bin), документацію (/ usr / share / doc), бібліотеки, використовувані програмами, встановленими користувачами (/ usr / lib), програми, встановлені користувачами на даному комп'ютері (/ usr / local), керівництво (/ usr / share / man), не життєво важливі утиліти для системного адміністрування (/ usr / sbin), файли заголовків (/ usr / include) / Var Файли даних змінної довжини, включаючи буферні каталоги поштових програм і принтерів. Файлова система Linux і файлові системи компанії Microsoft Незважаючи на велику схожість з файловими системами MS-DOS і Windows 9x/2000, файлова система Linux має кілька суттєвих відмінностей: - У файлових системах MS-DOS і Windows імена дисководів відповідають різним пристроям зберігання інформації (наприклад, дисковод А: представляє накопичувач на гнучких дисках, а дисковод С: - жорсткий диск). У Linux все пристрою зберігання розміщені в єдиній ієрархії файлової системи. Т.ч., каталог / usr цілком може відповідати другого жорсткого диска, а каталог / mnt/rem1 - файловій системі віддаленого комп'ютера, невидимої для користувача. - Замість використання для відділення один від одного імен каталогів символу зворотної косої межі в Linux використовується символ прямий косою риси. Т.ч., каталогу C: \ home \ chris в операційних системах Microsoft відповідає каталог / home / chris в операційній системі Linux. - Зазвичай імена файлів в операційній системі DOS мають розширення (наприклад,. Txt для текстових файлів і. Doc для файлів текстового процесора Word). Незважаючи на те, що цією угодою можна слідувати і в Linux, трехсімвольние розширення файлів не мають тут такого вирішального значення. Розширення файлів в Linux зручно використовувати тільки для визначення типу файлу. - Кожен файл і каталог в операційній системі Linux має асоційовані з ним права доступу і власника. Що ж стосується операційних систем Microsoft, то тут засоби безпеки різні в різних системах. Оскільки DOS і Windows спочатку розроблялися як однокористувацький операційні системи, концепція приналежності файлів не була вбудована в них на стадії розробки. Для вирішення цієї проблеми в пізніших версіях Windows з'явилася можливість визначення властивостей файлів і каталогів.

50. Оскільки Linux - система багатокористувацька, питання про організацію розмежування доступу до файлів і каталогів є одним із суттєвих питань, які повинна вирішувати операційна система. Механізми розмежування доступу, розроблені для системи UNIX в 70-х роках (можливо, втім, вони пропонувалися кимось і раніше), дуже прості, але вони виявилися настільки ефективними, що проіснували вже більше 30 років і донині успішно виконують стоять перед ними завдання.В основі механізмів розмежування доступу лежать імена користувачів і імена груп користувачів. Ви вже знаєте, що в Linux кожен користувач має унікальне ім'я, під яким він входить в систему (логіруется). Крім того, в системі створюється деяке число груп користувачів, причому кожен користувач може бути включений в одну або кілька груп. Створює і видаляє групи суперкористувач, він же може змінювати склад учасників тієї чи іншої групи. Члени різних груп можуть мати різні права по доступу до файлів, наприклад, група адміністраторів може мати більше прав, ніж група програмістів.В індексному дескрипторі кожного файлу записано ім'я так званого власника файлу і групи, яка має права на цей файл. Спочатку, при створенні файлу його власником оголошується той користувач, який цей файл створив. Точніше - той користувач, від чийого імені запущений процес, що створює файл. Група теж призначається при створенні файлу - за ідентифікатором групи процесу, що створює файл. Власника і групу файлу можна поміняти в ході подальшої роботи за допомогою команд chown і chgrp (докладніше про них буде сказано трохи пізніше).Тепер давайте ще раз виконаємо команду ls-l. Але задамо їй в якості додаткового параметра ім'я конкретного файла, наприклад, файлу, що задає саму команду ls. (Зверніть, до речі, увагу на цю можливість команди ls-l - отримати інформацію про конкретний файл, а не про всіх файлах каталогу відразу).[User] $ ls-l / bin / ls-Rwxr-xr-x 1 root root 49940 Sep грудня 1999 / bin / lsВи бачите, що в даному випадку власником файла є користувач root і група root. Але нас зараз у виводі цієї команди більше цікавить перше поле, яке визначає тип файлу і права доступу до файлу. Це поле в наведеному прикладі представлено ланцюжком символів-rwxr-xr-x. Ці символи можна умовно розділити на 4 групи.Перша група, що складається з єдиного символу, визначає тип файлу. Цей символ у відповідності з можливими типами файлів, розглянутими у попередньому розділі, може приймати такі значення:- = - Звичайний файл;d = - каталог;b = - файл блочного пристрою;c = - файл символьного пристрою;s = - доменне гніздо (socket);p = - іменований канал (pipe);l = - символічне посилання (link).Далі йдуть три групи по три символи, які і визначають права доступу до файлу відповідно для власника файлу, для групи користувачів, яка зіставлена ​​даного файлу, і для всіх інших користувачів системи. У нашому прикладі права доступу для власника визначені як rwx, що означає, що власник (root) має право читати файл (r), проводити запис в цей файл (w), і запускати файл на виконання (x). Заміна будь-якого з цих символів прочерком буде означати, що користувач позбавляється відповідного права. У тому ж прикладі ми бачимо, що всі інші користувачі (включаючи і тих, які увійшли до групи root) позбавлені права запису в цей файл, тобто не можуть файл редагувати і взагалі якось змінювати.Взагалі кажучи, права доступу і інформація про тип файлу в UNIX-системах зберігаються в індексних дескрипторах в окремій структурі, що складається з двох байтів, тобто з 16 біт (це природно, адже комп'ютер оперує бітами, а не символами r, w, x). Чотири біта з цих 16-ти відведені для кодованої запису про тип файлу. Наступні три біти задають особливі властивості виконуваних файлів, про які ми скажемо трохи пізніше. І, нарешті, залишилися 9 біт визначають права доступу до файлу. Ці 9 біт поділяються на 3 групи по три біта. Перші три біти задають права користувача, наступні три біти - права групи, останні 3 біти визначають права всіх інших користувачів (тобто всіх користувачів, за винятком власника файлу і групи файлу).При цьому, якщо відповідний біт має значення 1, то право надається, а якщо він дорівнює 0, то право не надається. У символьній формі запису прав одиниця замінюється відповідним символом (r, w або x), а 0 представляється прочерком.Право на читання (r) файлу означає, що користувач може переглядати вміст файлу за допомогою різних команд перегляду, наприклад, командою more або за допомогою будь-якого текстового редактора. Але, підредагувати вміст файлу в текстовому редакторі, ви не зможете зберегти зміни у файлі на диску, якщо не маєте права на запис (w) в цей файл. Право на виконання (x) означає, що ви можете завантажити файл у пам'ять і спробувати запустити його на виконання як виконувану програму. Звичайно, якщо в дійсності файл не є програмою (або скриптом shell), то запустити цей файл на виконання не вдасться, але, з іншого боку, навіть якщо файл дійсно є програмою, але право на виконання для нього не встановлено, то він теж не запуститься.Ось ми і дізналися, які файли в Linux є виконуваними! Як бачите, розширення імені файлу тут не при чому, все визначається установкою атрибуту "виконуваний", причому право на виконання може бути надано не всім!Якщо виконати ту ж команду ls-l, але в якості останнього аргументу їй вказати не ім'я файлу, а ім'я каталогу, ми побачимо, що для каталогів теж визначені права доступу, причому вони задаються тими ж самими символами rwx. Наприклад, виконавши команду ls-l /, ми побачимо, що каталогу bin відповідає рядок:drwxr-xr-x 2 root root 2048 Jun 21 21:11 binПриродно, що по відношенню до каталогів трактування понять "право на читання", "право на запис" і "право на виконання" дещо змінюється. Право на читання по відношенню до каталогів легко зрозуміти, якщо згадати, що каталог - це просто файл, що містить список файлів у цьому каталозі. Отже, якщо ви маєте право на читання каталога, то ви можете переглядати його вміст (цей самий список файлів у каталозі). Право на запис теж зрозуміло - маючи таке право, ви зможете створювати і видаляти файли в цьому каталозі, тобто просто додавати в каталог або видаляти з нього запис, що містить ім'я якогось файлу і відповідні посилання. Право на виконання інтуїтивно менш зрозуміло. Воно в даному випадку означає право переходити в цей каталог. Якщо ви, як власник, хочете дати доступ іншим користувачам на перегляд якогось файлу у своєму каталозі, ви повинні дати їм право доступу до каталогу, тобто дати їм "право на виконання каталогу". Більш того, треба дати користувачеві право на виконання для всіх каталогів, що стоять в дереві вище даного каталогу. Тому в принципі для всіх каталогів за умовчанням встановлюється право на виконання як для власника і групи, так і для всіх інших користувачів. І, вже якщо ви хочете закрити доступ до каталогу, то позбавите всіх користувачів (включаючи групу) права входити в цей каталог. Тільки не позбавляйте і себе такого права, а то доведеться звертатися до суперкористувачеві! (Прімеч.11)Після прочитання попереднього абзацу може здатися, що право на читання каталога не дає нічого нового в порівнянні з правом на виконання. Однак різниця в цих правах все ж є. Якщо задати тільки право на виконання, ви зможете увійти в каталог, але не побачите там жодного файлу (цей ефект особливо наочно проявляється в тому випадку, якщо ви користуєтеся якимось файловим менеджером, наприклад, програмою Midnight Commander). Якщо ви маєте право доступу в якомусь з підкаталогів цього каталогу, то ви можете перейти в нього (командою cd), але, як говориться "наосліп", по пам'яті, тому що списку файлів і підкаталогів поточного каталогу ви не побачите.Алгоритм перевірки прав користувача при зверненні до файлу можна описати таким чином. Система спочатку перевіряє, чи співпадає ім'я користувача з ім'ям власника файлу. Якщо ці імена співпадають (тобто власник звертається до свого файлу), то перевіряється, чи має власник відповідне право доступу: на читання, на запис або на виконання (не дивуйтеся, суперкористувач може позбавити деяких прав і власника файлу). Якщо право таке є, то відповідна операція дозволяється. Якщо ж потрібного права власник не має, то перевірка прав, що надаються через групу або через групу атрибутів доступу для інших користувачів, вже навіть не перевіряються, а користувачеві видається повідомлення про неможливість виконання витребуваного дії (зазвичай щось на кшталт "Permission denied").Якщо ім'я користувача, що звертається до файлу, не збігається з ім'ям власника, то система перевіряє, чи належить власник до групи, яка зіставлена ​​даного файлу (далі будемо просто називати її групою файлу). Якщо належить, то для визначення можливості доступу до файлу використовуються атрибути, які відносяться до групи, а на атрибути для власника і всіх інших користувачів уваги не звертається. Якщо ж користувач не є власником файла і не входить в групу файлу, то його права визначаються атрибутами для решти користувачів. Таким чином, третя група атрибутів, що визначають права доступу до файлу, відноситься до всіх користувачів, крім власника файлу і користувачів, що входять до групи файлу.Для зміни прав доступу до файлу використовується команда chmod. Її можна використовувати в двох варіантах. У першому варіанті ви повинні явно вказати, кому яке право даєте чи кого цього права позбавляєте:[User] $ chmod wXp назва_пакункаде замість символу w підставляєтьсяабо символ u (тобто користувач, який є власником);або g (група);або o (всі користувачі, що не входять в групу, якій належить даний файл);або a (всі користувачі системи, тобто і власник, і група, і всі інші).Замість X ставиться:або + (надаємо право);або - (лишаєм відповідного права);або = (установити зазначені права замість наявних),Замість p - символ, що позначає відповідне право:r (читання);w (запис);x (виконання).Ось кілька прикладів використання команди chmod:[User] $ chmod a + x file_nameнадає всім користувачам системи право на виконання даного файлу.[User] $ chmod go-rw file_nameвидаляє право на читання і запис для всіх, крім власника файлу.[User] $ chmod ugo + rwx file_nameдає всім права на читання, запис і виконання.Якщо опустити вказівку на те, кому надається дане право, то мається на увазі, що мова йде взагалі про всіх користувачів, тобто замість [user] $ chmod a + x file_nameможна записати просто[User] $ chmod + x file_nameДругий варіант завдання команди chmod (він використовується частіше) заснований на цифровому представленні прав. Для цього ми кодуємо символ r цифрою 4, символ w - цифрою 2, а символ x - цифрою 1. Для того, щоб надати користувачам якийсь набір прав, треба скласти відповідні цифри. Отримавши, таким чином, потрібні цифрові значення для власника файлу, для групи файлу і для всіх інших користувачів, задаємо ці три цифри в якості аргументу команди chmod (ставимо ці цифри після імені команди перед другим аргументом, який задає ім'я файлу). Наприклад, якщо треба дати всі права власнику (4 +2 +1 = 7), право на читання і запис - групі (4 +2 = 6), і не давати жодних прав іншим, то слід дати таку команду:[User] $ chmod 760 file_nameЯкщо ви знайомі з двійковим кодуванням вісімкових цифр, то ви зрозумієте, що цифри після імені команди в цій формі її подання є не що інше, як вісімкова запис тих самих 9 біт, які задають права для власника файлу, групи файлу і для всіх користувачів.Виконувати зміну прав доступу до файлу за допомогою команди chmod може тільки сам власник файлу чи суперкористувач. Для того, щоб мати можливість змінити права групи, власник повинен додатково бути членом тієї групи, якій він хоче дати права на даний файл.Щоб завершити розповідь про права доступу до файлів, треба розповісти ще про трьох можливих атрибутах файлу, що встановлюються за допомогою тієї ж команди chmod. Це ті самі атрибути для виконуваних файлів, які в індексному дескрипторі файла в двобайтового структурі, визначальною права на файл, займають позиції 5-7, відразу після коду типу файлу.Перший з цих атрибутів - так званий "біт зміни ідентифікатора користувача". Сенс цього біта полягає в наступному.Зазвичай, коли користувач запускає певну програму на виконання, ця програма отримує ті ж права доступу до файлів і каталогів, які має користувач, що запустив програму. Якщо ж встановлено "біт зміни ідентифікатора користувача", то програма отримає права доступу до файлів і каталогів, які має власник файлу програми (таким чином, розглянутий атрибут краще називати "бітом зміни ідентифікатора власника"). Це дозволяє вирішувати деякі завдання, які інакше було б важко виконати. Найхарактерніший приклад - команда зміни пароля passwd. Всі паролі користувачів зберігаються у файлі / etc / passwd, власником якого є суперкористувач root. Тому програми, запущені звичайними користувачами, в тому числі команда passwd, не можуть проводити запис в цей файл. А, значить, користувач як би не може міняти свій власний пароль. Але для файлу / usr / bin / passwd встановлений "біт зміни ідентифікатора власника", яким є користувач root. Отже, програма зміни пароля passwd запускається з правами root і отримує право запису у файл / etc / passwd (вже засобами самої програми забезпечується те, що користувач може змінити тільки один рядок в цьому файлі).Встановити "біт зміни ідентифікатора власника" може суперкористувач за допомогою команди[Root] # chmod + s file_nameАналогічним чином працює "біт зміни ідентифікатора групи".Ще один можливий атрибут виконуваного файлу - це "біт збереження завдання" або "sticky bit" (дослівно - "біт прилипчивости"). Цей біт вказує системі, що після завершення програми треба зберегти її в оперативній пам'яті. Зручно включити цей біт для завдань, які часто викликаються на виконання, так як в цьому випадку економиться час на завантаження програми при кожному новому запуску. Цей атрибут був необхідний на старих моделях комп'ютерів. На сучасних швидкодіючих системах він використовується рідко.Якщо використовується цифровий варіант завдання атрибутів в команді chmod, то цифрове значення цих атрибутів має передувати цифрам, що задає права користувача:[Root] # chmod 4775 file_nameПри цьому ваги цих бітів для отримання потрібного сумарного результату задаються наступним чином:4 - "біт зміни ідентифікатора користувача",2 - "біт зміни ідентифікатора групи",1 - "біт збереження завдання (sticky bit)".Якщо якісь з цих трьох бітів встановлені в 1, то дещо змінюється висновок команди ls-l в частині відображення встановлених атрибутів прав доступу. Якщо встановлено в 1 "біт зміни ідентифікатора користувача", то символ "x" в групі, визначальною права власника файлу, замінюється символом "s". Причому, якщо власник має право на виконання файлу, то символ "x" замінюється на маленьке "s", а якщо власник не має права на виконання файлу (наприклад, файл взагалі не виконуваний), то замість "x" ставиться "S". Аналогічні заміни мають місце при завданні "бита зміни ідентифікатора групи", але замінюється символ "x" в групі атрибутів, задаючих права групи. Якщо дорівнює 1 "біт збереження завдання (sticky bit)", то замінюється символ "x" в групі атрибутів, визначальною права для всіх інших користувачів, причому "x" замінюється символом "t", якщо всі користувачі можуть запускати файл на виконання, і символом "T", якщо вони такого права не мають.Таким чином, хоча у виведенні команди ls-l не передбачено окремих позицій для відображення значень бітів зміни ідентифікаторів і біта збереження завдання, відповідна інформація виводиться. Ось невеликий приклад того, як це буде виглядати:[Root] # ls-l prim1-RwSrwsrwT 1 kos root 12 Dec 18 23:17 prim1

51. У Linux для копіювання застосовується команда ср (/ bin / cp). Основні операції копіювання Безумовно, найпростіше застосування команди ср - копіювання файлу з одного каталогу в інший або створення дублікату в тому ж каталозі. Наприклад, щоб створити копію файлу ThisFile, помістивши її в тому ж каталозі під назвою ThisFile-Acopy, необхідно ввести наступну команду: $ Ср ThisFile ThisFile-Acopy Якщо тепер заглянути в зазначений каталог за допомогою команди 1s -1, то в ньому виявиться два файли абсолютно однакового обсягу, але з різними датами створення. Дата створення нового файлу співпаде з датою копіювання, первісний ж залишиться незмінним. Зміна файлаThisFile-Acopy не торкнеться файл ThisFile. Аналогічно, можна копіювати файл ThisFile в каталог / tmp (наприклад, щоб надати до нього доступ іншому користувачеві). Для цього скористайтеся наступною командою. $ Ср ThisFile / tmp

52. Створення каталогу. Для того, щоб створити каталог в Linux, виконайте команду:$ Mkdir названіе_каталогаде названіе_каталога - це той каталог, який ви хочете створити. До прикладу, створимо каталог mywork:$ Mkdir myworkВидалення каталогу.Видалення каталогу та його вмісту, можна провести з допомогою команд rmdir або rm:видаляємо каталог / usr / local / test / statistics:$ Rmdir / usr / local / test / statisticsабо рекурсивно каталог / usr / local / test, з усіма каталогами всередині нього:$ Rm-rf / usr / local / test

53. Перегляд вмісту файлів - вивести вміст файлу file1 на стандартне устройсвах виведення tac file1 - вивести вміст файлу file1 на стандартне устройсвах виведення в зворотному порядку (останній рядок ставати першою і т.д.)more more file1 - посторінковий вивід вмісту файлу file1 на стандартний пристрій виводу less file1 - посторінковий вивід вмісту файлу file1 на стандартний пристрій виводу, але з можливістю гортання в обидві сторони (вгору-вниз), пошуку по вмісту і т.п.head head -2 file1 - вивести перші два рядки файлу file1 на стандартний пристрій виводу. По-замовчуванню виводиться десять рядківtail tail -2 file1 - вивести останні два рядки файлу file1 на стандартний пристрій виводу. По-замовчуванню виводиться десять рядків tail-f / var / log / messages - виводити вміст файлу / var / log / messages на стандартний пристрій виводу у міру появи у ньому тексту.

54. Переміщення / Перейменування каталогу. За переміщення і перейменування каталогів, в Linux відповідає команда mv.Розглянемо приклади:переміщення каталогу / usr / local / statistics у вже існуючий, в домашній папці, каталог test1copy:$ Mv / usr / local / statistics ~ / test1copy /перейменування каталогу / usr / local / statistics в / usr / local / newstatistics:$ Mv / usr / local / statistics / usr / local / newstatistics55. Видалення файлів і каталогів Щоб повністю видалити файл, використовуйте команду rm ("remove"). Вкажіть ім'я файлу, що видаляється в якості аргументу. Щоб видалити файл `notes 'в поточному робочому каталозі, використовуйте:$ Rm notes [Enter] Щоб видалити каталог з усіма підкаталогами і файлами в ньому, використовуйте опцію `-R '(`` recursive''). Наприклад, для видалення каталогу `waste 'разом з його вмістом, наберіть:$ Rm-R waste [Enter] Щоб видалити порожній каталог, використовуйте команду rmdir; вона видаляє каталог, вказаний в якості аргументу. Якщо Ви вкажете каталог, в якому є файли або підкаталоги, rmdir повідомить про помилку. Щоб видалити каталог `empty ', введіть:$ Rmdir empty [Enter]

55. Видалення файлів і каталогів. Щоб повністю видалити файл, використовуйте команду rm ("remove"). Вкажіть ім'я файлу, що видаляється в якості аргументу. Щоб видалити файл `notes 'в поточному робочому каталозі, використовуйте:$ Rm notes [Enter] Щоб видалити каталог з усіма підкаталогами і файлами в ньому, використовуйте опцію `-R '(`` recursive''). Наприклад, для видалення каталогу `waste 'разом з його вмістом, наберіть:$ Rm-R waste [Enter] Щоб видалити порожній каталог, використовуйте команду rmdir; вона видаляє каталог, вказаний в якості аргументу. Якщо Ви вкажете каталог, в якому є файли або підкаталоги, rmdir повідомить про помилку. Щоб видалити каталог `empty ', введіть:$ Rmdir empty [Enter]

56. В системе Linux имеется набор утилит mtools, которые обеспечивают доступ к дискетам, отформатированным для использования в MS-DOS. Команда юсору позволяет копировать файлы на такую дискету и с нее. Никаких специальных операций вроде операции монтирования проводить не нужно. В частности, при использовании утилиты mtools не придется монтировать раздел MS-DOS для получения доступа к нему. Просто вставьте дискету MS-DOS в дисковод и пользуйтесь командами mtools. Скажем, для копирования файла с дискеты MS-DOS в систему Linux служит команда mсору. В отличие от обычных путевых имен DOS, в путевых именах, используемых с командами mtool, вместо обратной косой черты используется обычная косая. Каталог docs на диске А: обозначается путевым именем a:/docs, а не a:\docs. В следующем примере файл mydata копируется на дискету MS-DOS, а затем файл preface копируется с этой дискеты в текущий каталог Linux.

57. Уся інформація, що відноситься до прав доступу файлу зберігається як атрибути файла, тобто становить з ним одне ціле, і може бути переглянута за допомогою команди лістинга «ls -l»:

ls -l myfile

 

-rwxr-x--- 1 george administrators 10 2006-03-09 21:31 myfile

 

Як ви бачите з цього прикладу, команда «ls -l» дає досить багато інформації про «myfile»:

його ім'я — «myfile»;

його права — «-rwxr-x---»;

його власник — «george»;

його групу — «administrators»;

 

та іншу інформацію, що наразі не відноситься до цієї статті.

 

Те яким чином показані дозволи може дещо заплутати, якщо ви початківець у GNU/Linux або Unix. Але не засмучуйтесь, це дуже просто. Перший символ просто показує якого типу файл. Типи, які позначаються цим символом зазначені нижче:

"-" звичайний файл

"d" каталог

"l" символьне посилання

"s" сокет

"p" іменований канал (named pipe)

"c" символьний пристрій (небуферизований)

"b" блоковий пристрій (буферизований)

 

У нашому випадку myfile є звичайним файлом.

 

Тепер роздивімось інші дев'ять символів "rwxr-x---".

 

Перші три символи вказують, чи дозволено читання, зміна чи виконання для власника цього файлу (у нашому випадку george). Якщо так, то відповідні символи (r, w або x) будуть відображені, інакше вони будуть замінені знаками "-". Так само наступні три символи вказують чи дозволені ці дії для користувачів групи (у нашому випадку administrators). Зрештою останні три символи вказують дозволи для усіх інших користувачів (у нашому випадку для усіх хто не входить до групи administrators).

 

Отже для нашого випадку набір дозволів файлу myfile "rwxr-x---" означає, що george має права виконувати всі три операції над цим файлом (читати, змінювати та виконувати), користувачі групи administrators можуть тільки читати (r) або виконувати (x) цей файл але не змінювати, а всі інші користувачі з цим файлом не можуть робити ніяких операцій.

 

Ви можете уявити, що цей файл був написаний користувачем george як скрипт, призначений для адміністраторів, але має бути недоступний для звичайних користувачів... Але це тільки приклад, не будемо занадто на ньому зосереджуватись. Головне, що тепер ви розумієте концепцію дозволів та знаєте як передивитися їх командою "ls -l". Наступний крок це навчитися змінювати їх.

58. Midnight Commander (mc, ми́днайт-кома́ндер, «полуночный командир») — один из файловых менеджеров с текстовым интерфейсом типа Norton Commander для UNIX-подобных операционных систем, а также Microsoft Windows и Windows NT, OS/2, Mac OS X (но не Mac OS 9).

 

Midnight Commander (GNU Midnight Commander) является частью проекта GNU,[1] и все разработчики передали свои права на программу Free Software Foundation.[2]

[править]

Возможности

Работа с различными архивами и образами файловых систем, как если бы они являлись обычными каталогами.

Работа с сетевыми файловыми системами Samba, FTP, SFTP.

Выполнение операций копирования и перемещения файлов в фоновом режиме.

Встроенный текстовый редактор с подсветкой синтаксиса.

Текстовый режим, основанный на библиотеках ncurses и S-Lang. Это позволяет программе работать как в консоли, так и в различных эмуляторах терминала и через удалённые соединения, например, по протоколу SSH. Поддерживает мышь.

Поддержка многоязыкового интерфейса.

Поддержка кодировки UTF-8 (начиная с 2009 года).

Настраиваемое пользовательское меню, вызывается по F2. Каждый пункт меню выполняет набор команд оболочки (shell). Команды прописываются в файл ~/.mc/mc.menu (или ~/.mc/menu).

Список каталогов для быстрого доступа, вызывается по Ctrl+\. Настраивается непосредственно в панели быстрого доступа, либо редактированием файла ~/.mc/hotlist.

 

59-60. Характерною особливістю більшості типів даних є їх надлишковість. Ступінь надлишковості даних залежить від типу даних. Наприклад, для відеоданих ступі

 

нь надлишковості в декілька разів більша ніж для графічних даних, а ступінь надлишковості графічних даних, у свою чергу, більша за ступінь надлишковості текстових даних. Іншим фактором, що впливає на ступінь надлишковості є прийнята система кодування. Прикладом систем кодування можуть бути звичайні мови спілкування, які є ні чим іншим, як системами кодування понять та ідей для висловлення думок. Так, встановлено, що кодування текстових даних за допомогою засобів української мови дає в середньому надлишковість на 20-25% більшу ніж кодування аналогічних даних засобами англійської мови.

 

Для людини надлишковість даних часто пов'язана з якістю інформації, оскільки надлишковість, як правило, покращує зрозумілість та сприйняття інформації. Однак, коли мова йде про зберігання та передачу інформації засобами комп'ютерної техніки, то надлишковість відіграє негативну роль, оскільки вона приводить до зростання вартості зберігання та передачі інформації. Особливо актуальною є ця проблема у випадку необхідності обробки величезних обсягів інформації при незначних об'ємах носіїв даних. У зв'язку з цим постійно виникає проблема позбавлення надлишковості або стиснення даних. Коли методи стиснення даних застосовуються до готових файлів, то часто замість терміну "стиснення даних" вживають термін "архівування даних", стиснений варіант даних називають архівом, а програмні засоби, що реалізують методи стиснення називаються архіваторами.

 

В залежності від того, в якому об'єкті розміщені дані, що підлягають стисненню розрізняють:

Стиснення (архівування) файлів: використовується для зменшення розмірів файлів при підготовці їх до передавання каналами зв'язку або до транспортування на зовнішніх носіях малої ємності;

 

 

Стиснення (архівування) папок: використовується як засіб зменшення обсягу папок перед довготерміновим зберіганням, наприклад, при резервному копіюванні;

Стиснення (ущільнення) дисків: використовується для підвищення ефективності використання дискового простору шляхом стиснення даних при записі їх на носії інформації (як правило, засобами операційної системи).

Існує багато практичних алгоритмів стиснення даних, але всі вони базуються на трьох теоретичних способах зменшення надлишковості даних. Перший спосіб полягає в зміні вмісту даних, другий - у зміні структури даних, а третій - в одночасній зміні як структури, так і вмісту даних.

Якщо при стисненні даних відбувається зміна їх вмісту, то метод стиснення є незворотнім, тобто при відновленні (розархівуванні) даних з архіву не відбувається повне відновлення інформації. Такі методи часто називаються методами стиснення з регульованими втратами інформації. Зрозуміло, що ці методи можна застосовувати тільки для таких типів даних, для яких втрата частини вмісту не приводить до суттєвого спотворення інформації. До таких типів даних відносяться відео- та аудіодані, а також графічні дані. Методи стиснення з регульованими втратами інформації забезпечують значно більший ступінь стиснення, але їх не можна застосовувати до текстових даних. Прикладами форматів стиснення з втратами інформації можуть бути: JPEG (Joint Photographic Experts Group) для графічних даних; MPG - для для відеоданих; MP3 - для аудіоданих.

 

Якщо при стисненні даних відбувається тільки зміна структури даних, то метод стиснення є зворотнім. У цьому випадкові з архіву можна відновити інформацію повністю. Зворотні методи стиснення можна застосовувати до будь-яких типів даних, але вони дають менший ступінь стиснення у порівнянні з незворотними методами стиснення. Приклади форматів стиснення без втрати інформації: GIF (Graphics Interchange Format), TIFF (Tagged Image File Format) - для графічних даних; AVI - для відеоданих; ZIP, ARJ, RAR, CAB, LH - для довільних типів даних. Існує багато різних практичних методів стиснення без втрати інформації, які, як правило, мають різну ефективність для різних типів даних та різних обсягів. Однак, в основі цих методів лежать три теоретичних алгоритми:

 

 

алгоритм RLE (Run Length Encoding);

 

алгоритми групи KWE(KeyWord Encoding);

 

алгоритм Хафмана.

Алгоритм RLE

 

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

 

1 1 1 1 2 2 3 4 4 4

В алгоритмі RLE пропонується замінити її наступною структурою: 1 4 2 2 3 1 4 3, де перше число кожної пари чисел -це код даних, а друге - коефіцієнт повторення. Якщо для зберігання кожного елементу даних вхідної послідовності відводиться 1 байт, то вся послідовність займатиме 10 байт пам'яті, тоді як вихідна послідовність (стиснений варіант) займатиме 8 байт пам'яті.

 

Чим менше значення коефіцієнта стиснення, тим ефективніший метод стиснення. Зрозуміло, що алгоритм RLE буде давати кращий ефект стиснення при більшій довжині послідовності даних, що повторюється. У випадкові розглянутого вище прикладу, якщо вхідна послідовність матиме такий вигляд: 1 1 1 1 1 1 3 4 4 4, то коефіцієнт стиснення буде рівний 60%. У зв'язку з цим найбільша ефективність алгоритму RLE досягається при стисненні графічних даних (особливо для однотонових фонових зображень).

Алгоритми групи KWE

 

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

 

Існує досить багато реалізацій цього алгоритму, серед яких найбільш поширеними є алгоритм Лемпеля-Зіва (алгоритм LZ) та його модифікація алгоритм Лемпеля-Зіва-Велча (алгоритм LZW). Словником в даному алгоритмі є потенційно нескінченний список фраз. Алгоритм починає роботу з майже пустого словника, що містить тільки один закодований рядок, так званий NULL-рядок. Коли зчитується черговий символ вхідної послідовності даних, він додається до поточного рядка. Процес продовжується доти, поки поточний рядок відповідає якій-небудь фразі з словника. Але рано або пізно поточний рядок перестає відповідати якій-небудь фразі словника. У цей момент, коли поточний рядок являє собою останній збіг зі словником плюс щойно прочитаний символ повідомлення, кодер видає код, що складається з індексу збігу і наступного за ним символа, що порушив збіг рядків. Крім того, нова фраза, що складається з індексу збігу і наступного за ним снмвола, додається в словник. У наступний раз, коли ця фраза з'явиться в повідомленні, вона може бути використана для побудови більш довгої фрази, що підвищує міру стиснення інформації.

 

Алгоритм LZW побудований навколо таблиці фраз (словника), яка відображає рядки символів стиснуваного повідомлення в коди фіксованої довжини. Таблиця володіє так званою властивістю передування, тобто для кожної фрази словника, що складається з деякої фрази w і символа К фраза w також міститься в словнику. Якщо всі частинки словника повністю заповнені кодування перестає бути адаптивним (кодування відбувається виходячи з вже існуючих в словнику фраз).

 

Алгоритми стиснення цієї групи найефективніші для текстових даних великих обсягів і малоефективні для файлів малих розмірів (за рахунок необхідності зберігання словника).

Алгоритм Хафмана

 

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

 

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

 

Розглянемо простий приклад, що ілюструє роботу алгоритму Хафмана. Нехай задано текст, в якому літера 'А' входить 10 разів, літера 'B' - 8 раз, 'C'- 6 разів, 'D' - 5 разів, 'E' і 'F' - по 4 рази. Тоді один з можливих варіантів кодування за алгоритмом Хафмана наведений у таблиці 1.

 

Таблиця 1.

Символ

Частота входження

Бітовий код

 

A

 

B

 

C

 

D

 

E

 

F

 

 

Як видно з таблиці 1, розмір вхідного тексту до стиснення рівний 37 байт, тоді як після стиснення - 93 біт, тобто майже 12 байт (без врахування довжини словника). Коефіцієнт стиснення рівний 32%. Алгоритм Хафмана універсальний, тобто його можна застосовувати для стиснення даних будь-яких типів, але він малоефективний для файлів малих розмірів (за рахунок необхідності зберігання словника).

 

На практиці програмні засоби стиснення даних синтезують ці три "чистих" алгоритми, оскільки їх ефективність залежить від типу та обсягу даних. У таблиці 2 наведені найпоширеніші формати стиснення та відповідні їм програми-архіватори, що використовуються на практиці.

 

Таблиця 2.

Формат стиснення

Операційна система MS DOS

Операційна система Windows

 

Програма архівування

Програма розархівування

Програма архівування

Програма розархівування

 

61. Якщо при стисненні даних відбувається тільки зміна їх структури, то ме­тод стиснення - зворотний. З результуючого коду можна відновити почат­ковий масив. Зворотні методи застосовують для стиснення будь-яких ти­пів даних. Характерними форматами стиснення без втрати інформації є:

Ø .gif,.tif,.рсх і багато інших для графічних даних;

Ø .avi для відеоданих;

Ø .zip,.rar,.arj,.lzh,.lh,.cab і багато інших для будь-яких типів даних.

Метод стиснення з регульованою втратою інформації. Даний тип стис­нення застосовується тільки для тих типів даних, для яких формальна втрата частини змісту не приводить до значного зниження споживацьких властивостей. У першу чергу це відноситься до мультимедійних даних: відео, музичні записи, малюнки. Методи стиснення з втратою інформації звичайно забезпечують набагато вищий ступінь стиснення, ніж зворотні методи, але їх не можна застосовувати до текстових документів, баз да­них і, тим більше, до програмного коду.

Характерними форматами стиснення з регульованою втратою інформації є:

Ø .jpg для графічних даних;

Ø .mpg для відеоданих;

Ø .мр3 для звукових даних.

62. С развитием компьютера стали увеличиваться и объемы информации

хранимой в нем, что в свою очередь привело к развитию технологий по

хранению этой информации в сжатом виде, то есть в архивах. Для этого было

придумано множество программ осуществляющих архивацию информации.

Однако в работе с этой информацией иногда нежелательно раскрывать

полный архив, чтобы взять один или два требуемых файла или же просто

посмотреть, что в архиве за информация.

Программы-архиваторы, за исключением единиц, не предоставляют удобных

оболочек позволяющих просто, быстро и в наглядной форме разобраться с

содержимым архивов.

 

Архиваторы -- это программы, позволяющие создавать и обрабатывать

архивные копии файлов. При этом из архивные копии имеют меньший размер, чем

оригиналы. С помощью специальных алгоритмов сжатия из файлов удаляется вся

избыточная информация, а при применения обратных алгоритмов распаковки

архивная копия восстанавливается в первоначальном виде.

Наиболее известные программы-архиваторы для MS-DOS: ARJ (разработчик --

Robert K. Jung), pkzip

(компания PKWARE Inc.), lha (Haruyasu Yoshizaki), zoo (Rahul Dhesi).

Безусловным лидером во всем мире за последние 5 лет стал архиватор RAR. В

настоящее время RAR активно вытесняет ZIP как основную утилиту сжатия FTP

архивов в сети INTERNET. RAR я является единственной всемирно используемой

программой, созданной русским программистом (за исключением TETRIS). Все

архиваторы отличаются используемыми алгоритмами сжатия, форматами архивных

файлов, скоростью работы и т.д.

63. Існує два основні методи архівації:

Алгоритм Хаффмана. Алгоритм заснований на тому факті, що деякі символи із стандартного 256-символьного набору в довільному тексті можуть зустрічатися частіше за середній період повтору, а інші, відповідно, - рідше. Отже, якщо для запису поширених символів використовувати короткі послі­довності бітів, завдовжки менше 1 байта, а для запису рідкісних символів - більш довгі, то сумарний об'єм файлу зменшиться. Наприклад букви а, о, е, и - зустрічаються в тексті дуже часто, об'єм кожної букви при стандартному кодуванні дорівнює 1 байт (8 біт), стандартні коди можна замінити на цифри 0, 1,2, 3, які можна розмістити в 2-х бітах. Стиснутий об'єм буде дорівнювати 25 % від початкового, тобто стиснення буде у чотири рази.

Алгоритм Лемпеля-Зіва. Класичний алгоритм Лемиеля-Зіва формулю­ється таким чином: якщо в більш ранньому тексті вже зустрічалася подібна по­слідовність байт, то в архівний файл записується тільки посилання на цю послі­довність, а не сам текст. Особливо добре за допомогою цього алгоритму стиска­ються зображення. Великі ділянки одного кольору замінюються на посилання: (колір, розмір), графічні файли таким чином стискаються в 100-200 разів.

Оборотність стиснення

64.

68. WinZip — условно-бесплатный файловый архиватор и компрессор для Microsoft Windows и Apple Mac OS X фирмы Corel. PKZIP является основным форматом, хотя поддерживаются и другие архивные форматы.

68. Архіватор WinZip працює в оболонці, вікно якої має інтерфейс схожий на Power Archiver але без панелі папок. Проте, архіватор WinZip може також працювати в режимі майстра WinZip (WinZip Wizard), який переважно використовують користувачі-початківці.

 

Крім цього, WinZip інтегрується в операційну систему Windows. Так після інсталяції архіватора в контекстних меню файлів і папок та в меню File вікна папки з'являється новий пункт Add to Zip який дозволяє поміщати дані об'єкти в ZIP-архіви. Якщо викликати контекстне меню на архівному файлі, то з'являється пункт Extract to. який здійснює його розархівування у вказану користувачем папку.

 

70. Виконання операцій з файлами в оболонці WinZip дуже схоже на відповідні дії в Power Archiver. Так, повністю ідентичний порядок створення, відкриття та розархівуваня архівів. Вікно Add у WinZip складається з однієї закладки і додатково містить опції:

 

• Store file names in 8.3 format - перетворювати довгі імена файлів при архівуванні в DOS-формат (8 - ім'я та 3 - розширення);

 

• Save full path info - заархівовувати файли із збереженням повних шляхів до них на диску;

 

• Reset archive attribute - знімати з файлів, що архівуються архівний атрибут.

 

Вікно Extract у WinZip містить наступні, відмінні від Power Archiver, опції:

 

• Use folder names - розархівовувати із збереженням структури заархівованих папок. Якщо опція не відмічена, то всі файли будуть розархівовані в одну папку;

 

• Open Explorer window - відкрити у Windows Explorer папку, куди будуть розархівовані вибрані файли.

4.3. 71. У програмі WinZip є зручна технологія Drag and Drop, яка дозволяє максимально спростити відкриття та створення архівів.

· Для створення архіву за допомогою Drag and Drop у вікно WinZip або на значок WinZip на робочому столі перетягніть піктограму файла (файлів), який підлягає архівації. В наступному діалозі в поле Add to archive (Додати до архіву) уведіть ім'я та шлях до майбутнього архіву.

· У списку Action (Дія), оберіть операцію, яку необхідно виконати над файлом. За умовчанням пропонуєься опція Add (and replace) files (Додати та замінити файли). Насамкінець клацніть по кнопці Add (Додати), після чого почнеться архівація. Склад нового архіву буде виведено у вікно WinZip. Перегляньте зміст створеного архіву та впевніться, що отримано потрібний результат.

 

 

72.

73. Диалоговое окно Extract Parts.

 

Диалоговое окно Extract Parts. — Export to Audio File… (Экспортировать в Audio File); выбор этой команды в спускающейся панели меню File откроет диалоговое окно Save As Audio File.


Дата добавления: 2015-09-04; просмотров: 132 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Инженерный режим| Классификация вирусов по деструктивным возможностям

mybiblioteka.su - 2015-2024 год. (0.102 сек.)