Операційна система UNIX
1. Загальні поняття
Операційна система UNIX – це набір програм, який керує комп’ютером, зійснює зв’язок між користувачем і комп’ютером і забезпечує користувача інструментальними засобами, щоб допомогти йому виконати його роботу.
Система UNIX має 4 основних компоненти:
ядро - програма, яка утворює ядро операційної системи; вона координує внутрішні функції комп’ютера (такі як розміщення системних ресурсів). Ядро працює невидимо для користувача
shell - ця програма здійснює зв’язок між користувачем і ядром, інтерпретуючи і виконуючи команди користувача. Оскільки вона читає ввід і відсилає повідомлення користувачу, її можна назвати інтерактивною.
commands - імена програм, які комп’ютер повинен виконати. Пакети програм називають інструментальними засобами. UNIX забезпечує користувача інструментальними засобами для таких завдань, як створення і редагування текстів, написання програм, розвиток інструментарію програмного забезпечення, обмін інформацією.
file system - файлова система – це набір всіх файлів. Вона допомагає легко зберігати і відшукувати інформацію.
Розглянемо синтаксис команд UNIX.
В загальному випадку синтаксис є таким:
command option(s) argument(s) <Enter>
ім’я команди опція(ї) аргумент(и) Натискання клавіші Enter
Мінімальним набором є ім’я команди та натискання Enter.
Приклад:
ls -al file1 file2 file3 <Enter>
ім’я команди опція(ї) аргумент(и) Натискання клавіші Enter
В даному прикладі команда ls використовує два ключі (а та l) і три аргументи. Ключі можуть задаватись як разом (у вищерозглянутому випадку), так і окремо:
ls –a –l file1 file2 file4
Для того, щоб виконати команду, треба дочекатись готовності shell’a до набору команд
(в більшості випадків знак $), після чого набрати відповідну команду.
Наприклад:
$ cd /usr/bin
2. Користувачі
Для роботи в ОС UNIX кожен користувач повинен мати свій унікальний ідентифікатор та пароль.
Ідентифікатор використовується для визначення повноважень користувача та персоналізації різних параметрів.
Головним користувачем в системі є користувач root. Він має всі права на систему, може змінювати будь-які параметри, створювати нових користувачів. Тобто root являється адміністратором системи.
Перш ніж почати працювати, необхідно ввести ідентифікатор (username) та пароль. Запит системи виглядає так:
FreeBSD/i386 (NetSurfer.lp.lviv.ua.) (ttyp5)
login:
Після того, як користувач ввів ідентифікатор, система запитає про пароль. Після правильного вводу пароля користувач зможе працювати з системою.
FreeBSD/i386 (NetSurfer.lp.lviv.ua.) (ttyp5)
login: root
Password:
Welcome to FreeBSD !
$
Пароль на екрані не висвітлюється з метою безпеки.
3. Дерево каталогів
Файлова система UNIX ззовні аналогічна до файлової системи FAT (внутрішня будова відрізняється). Розглянемо дерево каталогів OС UNIX
/
stand
sbin
dev
etc
home
alex
student
tmp
var
usr
bin
lib
man
sbin
Розглянемо все детально.
/ – кореневий каталог. В ньому знаходяться всі решта каталоги UNIX.
(По аналогії з FAT: \ -кореневий каталог
/stand – містить програми, що завантажуються і файли даних, що використовуються в процесі завантаження.
/sbin – містить основні файли, що використовуються в процесі завантаження та при відновленні системи (у більшості випадків їх може запускати тільки привілейований користувач root).
/dev – містить спеціальні файли, які представляють собою периферійні пристрої (консоль, диски, лінійно-друкарський пристрій, паралельні та послідовні порти і т.д.)
/etc – містить файли конфігурації і бази даних організації системи.
/home – кореневий каталог для особистих каталогів користувачів.
/tmp – містить тимчасові файли
/usr – містить всі інші програми (бібліотеки lib, виконавчі файли bin та sbin, систему допомоги man і т.д.)
4. Властивості файлів
Розглянемо типові властивості файлів UNIX.
drwxr-xr-x root wheel 512 4 oct man/
-r-xr-xr-x root wheel 290088 5 oct ls
Кожен файл має власника та групу, до якої він належить. В даному випадку власник – root, група – wheel.
Перша колонка інформації про файл відповідає за систему прав. В ній є десять позицій. Перша позиція відповідає за тип файлу
- звичайний файл
d directory (каталог)
l link (зв’язок з іншим файлом, Shortcut в Windows)
s, b, c інші типи
Наступні три позиції відповідають за права власника файлу. Їх є три: read (r), write (w) та
execute (x). Кожна з них може бути встановлена або не встановлена.
-r-xr-xr-x root wheel 290088 5 oct ls
Отже, користувач root має право читати (read) та виконувати (execute) файл ls, але не має права писати в нього або знищувати його (оскільки root є власником файлу, він може змінити права на нього і отримати право write).
Наступні три позиції відповідають за права групи. Вони аналогічні вищерозглянутим – r, w, x.
Тобто, користувач, який належить до групи wheel, має право читати та виконувати файл ls.
-r-xr-xr-x root wheel 290088 5 oct ls
Останні три позиції відповідають за права всіх решта користувачів (які не є власниками файлу і не належать до відповідної групи).
-r-xr-xr-x root wheel 290088 5 oct ls
Цифри 290088 означають розмір файлу.
-r-xr-xr-x root wheel 290088 5 oct ls
5 oct – дата створення (модифікації).
5. Основні команди та оператори
cd (change directory)
Зміна текучого каталогу. Аналогічна до команди cd в MsDOS.
Синтаксис команди:
cd path <Enter>
path – каталог, в який необхідно перейти.
Наприклад,
$ cd /usr/local/bin
rm (remove)
Знищення файлу. Аналогічна до команди del в MsDOS.
Синтаксис команди:
rmdir [–rf] FileName <Enter>
r знищувати з підкаталогами
f не перепитувати про знищення
FileName – ім’я файла, який потрібно знищити.
Наприклад,
$ rm file01
mkdir (make directory)
Створення каталогу. Аналогічна до команди mkdir в MsDOS.
Синтаксис команди:
mkdir DirName <Enter>
DirName – ім’я каталога, який потрібно створити.
Наприклад,
$ mkdir dir01
rmdir (remove directory)
Знищення пустого каталогу. Аналогічна до команди rmdir в MsDOS.
Синтаксис команди:
rmdir DirName <Enter>
DirName – ім’я каталога, який потрібно знищити.
Наприклад,
$ rmdir dir02
ls (list)
Видає список файлів та каталогів. Аналогічна до команди dir в MsDOS.
Синтаксис команди:
ls [параметри] [файл]
параметри – список можливих параметрів. Деякі з них подано нижче.
файл – ім’я файлу(каталога), який потрібно переглянути.
Параметри:
-T повна інформація про час модифікації файлу, включаючи рік, місяць, день, годину, хвилини, секунди
-a показувати файли та каталоги, ім’я яких починається з крапки (в UNIX’i файли, імена яких починаються з крапки, вважаються невидимими (hidden). Для зручності їх використовують для конфігураційних файлів різних програм). По замовчуванню ці файли не показуються.
-l показувати файли в розширеному форматі (час створення, права, власник та група). По замовчуванню, без параметра l, виводяться тільки імена файлів.
-u використовувати час модифакації для сортування файлів.
Наприклад:
$ ls –al /usr/bin
passwd
Змінити пароль.
Синтаксис команди:
passwd
Спочатку система запитає про старий пароль, а потім попросить ввести новий та повторити його.
Наприклад:
$ passwd
Changing local password for arest.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done
$
chown
Змінити власника та групу файлу.
Синтаксис команди:
chown [-R] owner[:group] file
owner – новий власник файлу
group – група, до якої буде належати файл
file – ім’я файлу
-R очначає, що власник та група зміняться і у всіх підлеглих файлів. Тобто, якщо у каталозі bin є ще файли, і ми виконеємо команду chown –R someuser:somegroup bin, то всі файли, що знаходяться в каталозі bin будуть мати власником користувача someuser і групу somegroup. Якщо ж параметр –R не вказати, то власник та група зміниться тільки для каталогу bin, а всі файли залишаться зі старим власником.
chmod
Змінити тип і права доступу до файла.
Синтаксис команди:
chmod [-R] mode file
file – ім’я файлу
mode – тип та права доступу
who [+|-] mode
who – кому надаються права: u – user(власник), g – group(група), o – other(інші), a – all (всі)
+/- - додати(+) або забрати(-) відповідні права
mode – права: r, w, x
Приклад 1.
-rw- --- --- file1 - до виконання команди
chmod go+rx file1
-rw-r-xr-x file1 - після виконання
Приклад 2.
-r-xr-x --- file1 - до виконання команди
chmod g-rx file1
-r-x --- --- file1 - після виконання
Приклад 3.
-r-x --- --- file1 - до виконання команди
chmod a+w file1
-rwx-w---w file1 - після виконання
w
Список користувачів, які залоговані в системі в даний момент.
Наприклад:
$ w
9:56 up 4 days, 16:57, 6 users, load averages: 0.66, 0.57, 0.50
USER TTY FROM LOGIN@ IDLE WHAT
pam p0 ghost.lp.lviv.ua ср 05пп 2days mutt
pam p1 ghost.lp.lviv.ua чт 01пп 2days _su -m (tcsh)
akorud p2 guard.lp.lviv.ua 9:36 - vi /tmp/mutt-NetSurfer
pam p3 ghost.lp.lviv.ua чт 11 2days /usr/bin/perl
arest p4 mefisto.lp.lviv.ua 9:52 - w
pam p6 ghost.lp.lviv.ua пт 03пп 2days -tcsh (tcsh)
$
Розглянемо детально результат виконання.
З першої стрічки ми маємо змогу отримати таку інформацію:
Далі подана інформація конкретно про кожного користувача.
cat
Команда cat дозволяє переглянути файл(и)
Синтаксис команди:
cat file1 [file2 file3....]
file1, file2, file3 – імена файлів.
Аналогічна до команди type в MsDOS.
Наприклад:
$ cat /etc/ethers
00:c0:05:01:2f:a1 pm2.lp.lviv.ua
$
more
Команда more подібна за дією до команди cat, тобто вона дозволяє переглядати вмістиме файлів.Відмінність її полягає в тому, що користувач має змогу переглянути файл посторінково, тобто після перегляду кожної сторінки потрібно натиснути клавішу <SPACE>, щоб перейти до перегляду іншої сторінки. Також вона дозволяє здійснювати навігацію та пошук у файлі.
Синтаксис команди:
more file1 [file2 file3 ...]
Подібна до команди more в MsDOS.
echo
Вивести стрічку.
Синтаксис команди:
echo “String”
Аналогічна до команди echo в MsDOS.
Наприклад:
$ echo “Test string”
Test string
$
Перенаправлення вводу та виводу.
В UNIX’і, аналогічно до MsDOS існують оператори перенаправлення. Це оператори >,>>, < та |.
Оператор > використовується для перенаправлення стандартного виводу у новий файл. Якщо файл вже існує, виникне помилка.
Приклад 1:
cat /etc/passwd
Подана вище команда виведе вміст файлу /etc/passwd на стандартний вивід (екран).
А команда cat /etc/passwd > /home/arest/passwd перенаправить вивід у файл /home/arest/passwd.
Тобто, файл /home/arest/passwd буде копією /etc/passwd
Приклад 2.
echo “My name” > /home/arest/name
В результаті виконання цієї команди ми отримаємо файл /home/arest/name, який буде містити стрічку “My name”.
Оператор >> використовується в тих самих випадках, що і попередній, але потік інформації перенаправляється у вже існуючий файл. Якщо файла не існує, виникне помилка.
Наприклад:
$ cd /home/arest
$ ls
passwd
name
$ echo “Andrew” >> name
$ cat name
My name
Andrew
$
Оператор < використовується для перенаправлення вводу.
Наприклад, програма Prog1 просить ввести ваше ім’я, після чого його виводить на стандартний вивід.
$Prog1
Please enter your name: Andrew
Your name is Andrew
Користувач вводить стрічку з клавіатури, але можна використати оператори перенаправлення.
Створимо файл myname, в який запишемо стрічку “Andrew”.
$ echo “Andrew” > myname
$
Тепер запустимо програму Prog1 і подамо їй на вхід файл myname.
$ Prog1 < myname
Please enter your name:
Your name is Andrew
В цьому випадку не потрібно нічого набирати на клавіатурі
Оператор | ще називають оператором конвеєра. Тобто, результат виконання попередньої команди передається у наступну команду.
Наприклад:
ls –al /usr/local/etc | more
Якщо у каталозі /usr/local/etc файлів більше, ніж може поміститись на сторінку, то при простому виконанні команди ls –al /usr/local/etc ми побачимо тільки n останніх файлів. Використавши оператор конвеєра та перенаправивши виконання команди ls на вхід команди more, ми отримаємо посторінковий перегляд списку файлів каталога /usr/local/etc.
Повноекранний редактор VI
Редактор vi – універсальний повноекранний текстовий редактор в середовищі UNIX. Універсальність означає, що, по-перше, цей редактор є у всіх UNIX-подібних ОС і, по-друге, цей редактор працює з практично будь-яким видом терміналу (ANSI, VT100, VT220, VT320, DEC). Ця універсальність обернулась дещо незвичним (для користувача MsDOS) інтерфейсом користувача: для керування редактором використовуються тільки “звичайні” клавіші клавіатури (алфавітно-цифрові символи і знаки).
Функціональні клавіші, що присутні на багатьох типах терміналів, практично не використовуються. Якщо клавіатура терміналу має клавіші стрілок, то вони використовуються, але в обмеженому контексті.
1. Режими роботи редактора
Ввід тексту
В цьому режимі все, що набирається на клавіатурі відображається на екрані і запам’ятовується в буфері редактора.
Командний режим
В цьому режимі символи клавіатури виконують спеціальні функції (переміщення курсора, знищення частин тексту і т.д.), тобто функції редагування.
Команди, що набираються НЕ ВІДОБРАЖАЮТЬСЯ НА ЕКРАНІ !
Режим командної стрічки
Режим командної стрічки дозволяє проводити більш глобальні операції з текстом: записувати відредагований текст в файл, зчитувати новий файл, виходити з vi, здійснювати пошук по шаблону, заміну, а також здійснювати деякі функції редагування.
Команди відображаються в нижній частині екрану (в “командній стрічці” редактора).
2. Ввід тексту
<Enter> - утворює пусту стрічку і переводить курсор на її початок
<Ctrl – H> - знищує останній введений символ (ця дія не відображається на екрані до виходу в командний режим
<Ctrl – [> або <Esc> - переводять редактор в командний режим
3. Команди
3.1. Переміщення курсора
Переміщатись по тексту можна також за допомогою стрілок.
3.2. Редагування
4. Командна стрічка
5. Повторювачі, буфери, вікна редагування
5.1. Повторювачі
До команд і пересування курсора можна додавати повторювачі (числа), наприклад:
5.2. Буфери vi
Редактор має три типа буферів: буфер знищення (0-9), неіменований буфер і іменовані буфери (a-z).
В буфер знищення автоматично заносяться елементи, що знищуються. В буфері 0 зберігається останній знищений елемент, в буфері 1 – передостанній і т.д.
5.3. Багатовіконне редагування
Редагувати відразу декілька файлів можна використавши команду редактора :e filename, або вказавши всі необхідні файли в командній стрічці при виклику редактора.
Наприклад:
$ vi file1 file2 file3
Рухатись по списку файлів можна за допомогою команд:
Іменовані буфери зберігають свій вміст при переході до редагування іншого файлу.