Операційна система 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
Рухатись по списку файлів можна за допомогою команд:
Іменовані буфери зберігають свій вміст при переході до редагування іншого файлу.