Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB_1.doc
Скачиваний:
1
Добавлен:
28.08.2019
Размер:
70.66 Кб
Скачать

2.2. Робота з каталогами

Файли можна створювати, знищувати і перейменовувати. Такі ж операції можуть застосовуватися і до каталогів. Проте для каталогів ці операції є привілейованими і можуть бути виконаний тільки за допомогою команд:

mkdir Створити каталог.

rmdir Знищити порожній каталог.

mv Перейменувати каталог.

Якщо поточним каталогом є /home/mdm, то команда

mkdir tmg створить каталог /home/mdm/tmg, а команда

rmdir tmg знищить його. Команда rmdir знищує тільки порожні каталоги, які до того ж не є поточними.

При створенні каталогу в ньому для зручності автоматично створюються два стандартні елементи з іменами « . » і « . . »

Ім'я « . » по­значае сам цей каталог, а ім'я « . . » - попередній каталог.

Якщо /home/mdm/tmg - поточний каталог, то після виконання команди сd .. новим поточним каталогом стане батьківський каталог /usr/mdm.

За допомогою команд mv і ср можна переносити або копіювати групи файлів в заданий каталог. Як команда

mv файл; файл ... каталог

так і ср файл; файл ... каталог

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

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

mv х d

mv у d

mv z d

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

2.3 Оолонка

Найпростіші команди складаються з послідовності слів, розділених пропусками. Першим словом є ім'я команди, яку потрібно виконати. Вся решта слів передається команді, що викликається, як параметри. Наприклад, команда

ls -l

видає список імен файлів в поточному каталозі. Параметр -l (від слова long - довгий) означає, що команда ls повинна надрукувати для кожного файлу дату останнього обігу, розмір і статус. Імена файлів в списку упорядковуються за абеткою.

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

print file &

запускає команду друку print з параметром file (ім'я файлу) як фонову. Літера & є металітерой, интерпретируючою оболонкою, і не передається команді print як параметр. Для того, щоб дати можливість користувачу стежити за ходом виконання команди, оболонка після створення фонового процесу повідомляє його номер. Список активних в даний момент процесів можна отримати за допомогою команди рs.

Для кожного процесу в системі міститься набір дескрип­торів файлів з номерами 0, 1 .... які використовуються про­цесором і операційною системою у всіх операціях вводу-виводу. Файл з дескриптором 0 називається стандартним файлом введення, а файл з дескриптором 1 - стандартним файлом виводу. При виконанні більшості команд результати передаються в стандартний файл виводу, який спочатку (відразу після входу в систему) пов'язаний з терміналом. Є також стандартний файл діагностики, який звичайно використовується для виводу повідомлень про помилки. На час виконання команди стандартний файл виводу можна підмінити (перепризначувати), наприклад:

ls -l > файл

Запис > файл інтерпретується оболонкою і не передається команді ls як параметр. Якщо вказаний файл не існує, оболонка створює його. В іншому випадку початковий вміст цього файлу заміниться виводом команди ls. Для дозапису в кінець файлу використовується позначення >>, наприклад:

ls -l >> файл

Аналогічно стандартним файлом введення замість терміналу можна зробити звичайний файл, наприклад:

wc < файл

Команда wc друкує число літер, слів і рядків в стандартномуфайлі введення.

Транспортери і фільтри

Стандартний вивід однієї команди можна пов'язати із стандартним введенням іншої команди за допомогою транспортера - опе­ратора . Наприклад:

ls -l | wc

Дві команди, сполучені таким чином, утворюють конвейєр, дія якого еквівалентно:

ls -l > файл

wc <файл

за винятком того, що в цьому випадку не використовується проміжний файл. Натомість два процеси зв'язуються транспортером, який створюється шляхом звернення до системи. Транспортери дозволяють передавати дані тільки в одному на­прямку. Синхронізація здійснюється шляхом припинення виконання команди wc, коли нічого читати, і припинення виконання команди ls при переповнюванні транспортера. синхронизацію здійснює операційна система, а не оболонка.

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

ls | grep old

роздрукує з виводу команди ls тільки ті рядки, які містять ланцюжок літер old (якщо такі є). Інший фільтр – це команда сортування sort. Наприклад

who | sort

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

ls | grep old | wc -l

надрукує кількість файлів в поточному каталозі, імена ко­торых містять ланцюжок літер old.

Породження імен файлів

В багатьох командах параметрами є імена файлів. На­приклад, команда

ls -l main.c роздрукує інформацію про файл main.с.

Оболонка надає засоби для породження списку імен файлів по заданому зразку. Наприклад, команда

ls -l *.с породжує список параметрів, що містить всі імена файлів з поточного каталогу, що закінчуються на .с. Літера * є зразком, який зіставляється з будь-яким ланцюжком, вклю­чаючи і порожню. В загальному випадку зразки в командах задаються за допомогою наступних металітер:

* Зіставляється з будь-яким ланцюжком літер, включаючи і порожнію.

? Зіставляється з будь-якою одиночною літерою.

[. . .] Зіставляється з будь-якою з літер, укладених в дужки. Пара літер, розділених знаком мінус, задає діапазон літер.

Наприклад, зразку

[а - r]* відповідають всі імена з поточного каталогу, що починаються з однією з букв від а до r, а зразку

/home/fred/epns/?* відповідають всі імена з каталог /home/fred/epns/, що складаються хоча б з однієї літери. Якщо не виявиться жодного імені файлу, відповідного заданому зразку, як пара­метра передається сам цей зразок.

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

echo /home/fred/*/соге

шукає і видає імена всіх файлів соге в підкаталогах каталогу /home/fred/. (Команда есhо - це стандартна команда, яка виводить список своїх параметрів, розділених пропусками.)

Існує одне виключення із загальних правил для зразків. Символ « . » на початку імені файлу повинно указуватися явно. Тому команда

есhо *

видає тільки ті імена файлів з поточного каталогу, які не починаються з крапки, а команда

есhо .*

роздрукує всі ті імена файлів з поточного каталогу, які починаються з крапки. Це дозволяє уникнути випадкового зіставлення з іменами « . » і « . . », позначаючими відповідно поточний і батьківський каталог. (Команда ls не виводить ін­формацію про файли . і .. .)

Слід бути обережним при використовуванні команди rm із зразками. Легко можна знищити більше файлів, ніж було задумане.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]