- •Лабораторна робота №1 Ознайомлення з операційною системою qnx rtp 6.3
- •1. Завантаження операційної системи
- •2. Поняття про файлову систему і огляд основних команд і утиліт системи qnx rtp 6.3
- •2.1. Робота з файлами.
- •2.2. Робота з каталогами
- •2.3 Оолонка
- •2.4. Зміна повноважень файлу
- •2.5. Компіляція програм
- •Порядок виконання роботи
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 із зразками. Легко можна знищити більше файлів, ніж було задумане.