Základní charakteristika, vlastnosti, historie

Jde o operační systém vytvořený v Bellových laboratořích americké firmy AT&T v roce 1969. Většina současných operačních systémů je unixovými systémy různou měrou inspirována.Označení UNIX je ochranná známka, kterou v současné době vlastní konzorcium The Open Group a mohou ji používat pouze systémy, které jsou certifikovány podle Single UNIX Specification.Existují různé systémy, které jsou s UNIXem v různé míře kompatibilní, ale nemohou nebo nechtějí platit licenční poplatky, a proto často používají varianty názvů, které na název UNIX odkazují (například XENIX, MINIX, Linux), ale mohou se jmenovat i jinak (například BSD varianty OpenBSD, NetBSD, ale též Mac OS X atd.). Souhrnně je označujeme jako unixové systémy (anglicky unix-like, viz článek UN*X). Pod pojmem „tradiční Unix“ se rozumí operační systém, který svojí charakteristikou odpovídá systémům Version 7 Unix nebo UNIX System V.

Unixové systémy byly široce využívány jako operační systémy pro servery, pracovní stanice a v současné době i pro osobní počítače. Sehrály velmi výraznou roli při vzniku Internetu a přechodu od jednotlivých počítačů k počítačovým sítím a modelu klient-server. Unix vznikl v spolu s programovacím jazykem C, který mu umožnil snadnou portaci na nejrůznější hardwarové platformy. Výsledkem je, že Unix je synonymem pro otevřený systém (anglicky open system).

Systém založený na Unixu je charakteristický tím, že (tzv. unixová filozofie):

  • je jednoduchý (na rozdíl od Multicsu, který se pokoušel vše vyřešit a aplikovat velmi pokročilé ideje)
  • je víceúlohový (viz multitasking)
  • je víceuživatelský (uživatelé s domácími adresáři, individuální konfigurační soubory, přístupová oprávnění, současná práce více uživatelů)
  • má hierarchický souborový systém (strom adresářů s jedním kořenem)
  • téměř vše je soubor (zařízení a prvky meziprocesové komunikace)
  • data (konfigurační soubory) jsou uložena jako holý text (anglicky plain text)
  • důraz je kladen více na vztahy mezi programy, než na programy samotné (dělba práce)
  • je orientovaný na zpracování textů.

Unix je složen z jádra operačního systému, systémových nástrojů (tzv. utility) a dalších aplikací. Monolitické jádro se stará o nízkoúrovňové záležitosti (tzv. kernel space) a programy běží v uživatelském režimu (tzv. user space). Programy komunikují s jádrem pomocí systémových volání, čímž se pro programy vytváří stabilní API.V 80. letech 20. století počítače využívaly mnohem více vstupně-výstupních zařízení, která přestala vyhovovat lineárnímu modelu. Proto v té době nastal odklon od monolitického jádra a příklon k mikrojádrům, kde obsluhu souborového systému, počítačové sítě, asynchronních událostí generovaných myší, meziprocesovou komunikací a dalších byla odsunuta mimo jádro operačního systému.

Jádro operačního systému, jeho parametry a konfigurace

Jádro je zavedeno do operační paměti při startu (bootování) počítače a je mu předáno řízení. U pokročilých operačních systémů jádro nikdy neztrácí kontrolu nad počítačem a po celou dobu jeho běhu koordinuje činnost ostatních běžících procesů. Označení kernel pochází z angličtiny, kde označuje jádro pecky, zrno nebo ztvrdlou dužinu ovoce.Hlavní úkol jádra spočívá v přidělovaní paměti a času procesoru (či procesorů) programům, ovládání zařízení počítače (pomocí ovladačů) a abstrakci funkcí (aby bylo např. možné načítat soubory z pevného disku a z jednotky CD-ROM stejným příkazem).Pro zajištění bezpečnosti operačního systému je nutné, aby procesor podporoval dva módy činnosti: omezený pro aplikace a privilegovaný (se speciálními strojovými instrukcemi) pro jádro. Privilegovanému módu se proto někdy říká kernel mód. Podle architektury operačního systému se typicky rozlišuje mikrokernel (mikrojádro, jádro je velice jednoduché a obsahuje pouze zcela základní funkce, zbytek operačního systému je mimo toto jádro v aplikacích) a makrokernel (monolitické jádro, jádro je rozsáhlé, obsahuje velké množství funkcí pro všechny aspekty činnosti operačního systému včetně například souborového systému). Jakýmsi kompromisem je modulární jádro, které je fakticky makrojádrem (celé běží v privilegovaném režimu) ovšem jeho značná část je tvořena takzvanými moduly, které je možné přidávat a odebírat za běhu systému.

Shell – druhy, nastavení

Shell (interpret příkazů) je označení programu, který vytváří v počítači rozhraní pro uživatele. Shell umožňuje uživateli využívat funkce jádra operačního systému, zejména spouštět programy, zajišťovat pro ně vstupy, zobrazovat, uchovávat a přesměrovávat jejich výstupy, spojovat jednotlivé programy do kolon a podobně.Shelly dělíme do dvou skupin: řádkové a grafické. Řádkové shelly vytvářejí příkazový řádek (CLI) a jsou využívány zejména pro administraci počítačových systémů. Grafické (vizuální) shelly vytvářejí grafické uživatelské rozhraní (GUI), které je vhodnější pro běžné uživatele.

Unixový shell je název textového uživatelského rozhraní, které je předchůdcem grafického uživatelského rozhraní. Shell je spuštěn po přihlášení uživatele do systému, vytvoří příkazový řádek, pomocí kterého uživatel může počítač ovládat a jeho ukončením je uživatel ze systému odhlášen.

Shell je tradičním rozhraním pro operační systém UNIX a Unixu podobné systémy, ve kterých si uživatel může vybrat z široké nabídky různých shellů. V operačním systému DOS existuje podobný, ale mnohem jednodušší program COMMAND.COM. V Microsoft Windows ho nahrazuje program cmd.exe, který se v poslední verzi systému Windows Vista unixovým shellům přibližuje.

Nejdůležitějšími shelly jsou:

  • Bourne shell (sh)

standardním unixovým shellem pro systém Version 7 Unix, který byl uvolněn v roce 1977 a byl distribuován školám a univerzitám. Jeho autorem je Steph Bourne z AT&T Bell Laboratories. Bourne shell je soubor /bin/sh a zůstává stále implicitním shellem v mnoha unixových distribucích

  • C shell (csh)

Jeho syntaxe je silně ovlivněná programovacím jazykem C (odtud pochází název shellu). C shell přidal mnoho vylepšení oproti Bourne shell, jako například aliasy a historii příkazů.

V současné době není původní C shell v Unixu široce využiván;

*-libovolný řetězec; ?-libovolný znak; < soubor na vstup; > soubor na výstup

  • Korn shell (ksh)

Je zpětně kompatibilní s Bourne shellem (bsh) a zahrnuje v sobě také řadu kladných vlastností C shellu (csh), jakou je např. historie příkazů. Ksh má za cíl respektovat jazykový standard Shellu. Pro interaktivní použití nabízí ksh možnost editování příkazové řádky způsobem WYSIWYG tak, že se buď aktivováním směru kursoru nahoru (šipka nahoru) nebo stiskem kombinace kláves pro předchozí řádku vyvolá předchozí příkaz a poté uživatel upravuje příkaz jako kdyby byl v módu editace řádky.Až do roku 2000 zůstával Korn Shell softwarem vlastněným společnosti AT&T a pak byl zdrojový kód zveřejněn a stal se open source.

  • Bourne-again shell (bash)

Bash je v informatice název unixového shellu, který vytváří interpret pro příkazový řádek. Bash naprogramoval Brian Fox pro projekt GNU. Název je akronym pro Bourne again shell, což poukazuje na jeho základ v dříve nejpoužívanějším unixovém shellu Bourne shell (sh). Někdy se tento název také uvádí jako slovní hříčka odkazující na křesťanské znovuzrození (anglicky born again) nebo jako stlučení (anglicky bashing) všech výhod sh, csh and ksh.

Grafická uživatelská rozhraní pro Unix, například GNOME a KDE, jsou občas nazývána vizuální shell nebo grafický shell. Zde jsou možnosti úprav dalece napřed oproti konkurenčním Windows 7 – nejsou prakticky nijak omezené viz. Compiz apod.

Souborový systém, adresářová struktura, práce se soubory a adresáři

Souborový systém ext2 je přímým nástupcem souborového systému ext. Jejich struktura na disku přímo vychází ze systému souborů UFS, který používaly první unixové systémy. Mezi jeho hlavní charakteristiky patří:

  • lze vytvářet adresáře
  • lze vytvářet různé typy souborů: obyčejný soubor, speciální soubor (reprezentuje zařízení, je typu blokový a znakový), pojmenované roury, sockety
  • umožňuje používat pevné odkazy, symbolické odkazy
  • pro každý soubor a adresář se ukládají práva UGO – vlastníka (user), skupiny (group), ostatních (other) a rozšířené atributy

Souborový systém ext3 nabízí oproti svému předchůdci ext2:

  • žurnálování (informace o dokončených operacích)
  • indexy souborů v adresáři implementované stromy (do té doby se používal pouze lineární seznam, v ext3 se používá jen na malé adresáře)
  • možnost změnit velikost souborového systému za běhu (od listopadu 2004)

Systém ext4 může být použit na svazku o velikosti až 1 EiB (1024 PiB – pebibytů), přibližně 1018 bajtů), podporuje extenty a odstraňuje limit původního systému ext3, jež mohl obsahovat v adresáři maximálně 32 768 podadresářů. S původním ext3 je kompatibilní zpětně i dopředně (pod typem ext4 je možné namountovat ext3, a naopak pod typem ext3 lze připojit ext4 svazek, pokud nepoužívá extenty).

Mezi další vlastnosti patří podpora nanosekundových časových razítek a pre-alokace i zpožděná alokace místa pro soubory. Ovladač ext4 obsahuje (stejně jako předchozí verze souborového systému) nástroje, které omezují fragmentaci již při ukládání dat na disk. Nově však ext4 umožňuje nasazení online defragmentátoru na úrovni souborů nebo celého souborového systému. Díky označování nepoužitých oblastí disku mohou nástroje pro opravu systému (fsck) pracovat rychleji než na ext3.

Z pohledu Unixu je souborový systém připojen do nějakého adresáře buďto uvnitř jiného systému souborů, nebo do tzv. kořenového adresáře (/). Zde můžeme nalézt tři druhy souborových systémů:

  • lokální (ext2, reiserfs, XFS…)
  • síťový (NFS, AFS, Samba…)
  • virtuální (/proc, /sys, devfs…)

Vzhledem k tomu, že základem jsou lokální systémy a rozumný popis ostatních by byl nad rozsah několika knih, natož tohoto článku, budeme se zabývat pouze lokálními.

Lokální souborový systém obecně pracuje nad nějakým blokovým zařízením (typicky pevný disk). Obsahem tohoto zařízení bude v nějaké formě následující:

  • hlavička souborového systému (tzv. superblok)
  • seznam volných bloků
  • hlavičky souborů (tzv. i-uzly)
  • adresáře
  • vlastní data souborů
  • případně tzv. žurnál

Adresář je ve své podstatě soubor, který obsahuje nějakou formu seznamu jmen souborů. Každá položka adresáře je svázána s takzvaným i-uzlem. Jedná se o datovou strukturu obsahující nejrůznější metadata (práva, vlastník…) a seznamy popisující polohu obsahu souboru na disku.

Regulární výrazy

Regulární výraz (regular expression), označovaný též zkráceně jako regexp či regex je speciální řetězec znaků, který představuje určitý vzor (chcete-li masku) pro textové řetězce. Regulární výrazy se proto nejčastěji používají ke kontrole dat zadávaných ve formulářích (například e-mailová adresa či PSČ) nebo „parsování” kódu (třeba HMTL, XML či CSV).

Regulární výrazy můžete v současné době najít téměř ve všech programovacích jazycích (C#, Java, Visual Basic .NET, Perl, PHP, Javascript aj.) a mnoha programech zvláště pro Unix/Linux. I základní znalost regulárních výrazů vám při programování může ušetřit mnoho řádků kódu (především různých „if-then-else” konstrukcí).

Jejich prostřednictvím můžete:

  • vyhledávat a nahrazovat v textových editorech a dalších programech
  • přetvářet je do podoby, kterou potřebujete
  • vytahovat z textových dat údaje, které vás zajímají

 

  • grep‘[abc]‘………. vyhledá všechny, nejen řetězec.. vše s a,b nebo c
  • grep‘[*]‘…… vše,  ‘[a-zA-Z0-9-]‘.. všechna malá a velká písmena, čísla a znak „-“
  • grep‘[][]‘
  • grep‘[^0-9]‘….vše krom číslic.. ^je negace
  • grep‘[]*‘ libovolný počet opakování
  • grep‘[A-Za-z][a-zA-Z0-9]*‘
  • grep “[^“]\{1,\}“ .. vypíše řetězec v uvozovkách.. bez krajních uvozovek a musí obsahovat minimálně jeden znak
  • grep‘[0-9]\{6\}/[0-9]\{3,4\}‘ .. vyhledání rodných čísel..  xxxxxx/xxxx
  • sed ‘s / ‘[0-9]\\{6\\}\/[0-9]\\{3,4\\}‘ /xxxxxx\/xxxx/g‘ .. nahrazení za xka..

Příkazy pro práci se soubory a adresáři

  • dos                 linux
  • cd                   cd
  • dir                   ls
  • mkdir(md)      mkdir
  • rmdir               rmdir
  • del                  rm
  • copy               cp

Řetězení příkazů a přesměrování standardního vstupu/výstupu

Standardní vstup, výstup, přesměrování (< > >>), řetězení příkazů (; & && || |).

Přesměrování standardního výstupu

Pokud na konec příkazu přidáte řetězec >název_souboru, výstup příkazu se zapisuje do souboru se zadaným názvem.
Symbol > se označuje jako operátor přesměrování výstupu. Kterýkoliv příkaz s výstupem výsledků na obrazovku může svůj výstup odesílat do souboru.

Přesměrování standardního vstupu

Pokud na konec příkazu přidáte řetězec < název_souboru, vstup příkazu se čte ze souboru se zadaným názvem. Symbol < se označuje jako operátor přesměrování vstupu.

Uživatelé a práva v unixovém prostředí, související příkazy

adduser (systémový skript, není to binární soubor, není ve všech linuxech)

  • První se zadá jméno enter
  • UID- buď zadáme vlastní, nebo se defaultně nastaví dosud nejvyšší použité + 1 enter
  • Initial group (skupina) enter
  • Domovský adresář (nechává se defaultní) enter
  • Shell (necháváme defaultní) enter
  • Expirace účtu: do kdy lze používat enter
  • Kontrola jestli je vše správné enter konec povinných informací
  • Následuje nepovinná část informací
  • Povinné heslo
  • userdel [-r] name (závorky se nepíšou!)
  • groupadd –g 777 test –o test2

useradd (systémový příkaz ve všech linuxích)

Příkazem useradd pouze zakládáme  uživatele a potom se mění heslo pomocí příkazu passwd

Parametry:

  • u : UID jednoznačně určený uživatel
  • o : vytvořit dva uživatele se stejným UID
  • g : primární skupina
  • G : všechny ostatní skupinky, kam chceme, aby patřil
  • d : domovský adresář
  • s : shell (musí být pevná kompletní cesta)
  • c : cement – podrobné informace o uživately, nepovinné (tel číslo atd)
  • m : bez tohoto parametru se mi nevytvoří domovský adresář!
  • k : vynecháváme

vynecháváme i zbytek až na jediný povinný údaj, a to je jméno uživatele!

Když vytváříme uživatele pomocí připisování do souboru /etc/passwd tak nesmíme zapomenout vytvořit domovský adresář a určit k němu práva…

Práva se řeší příkazem chmod a jsou řešena trojicí číslic v tomto pořadí: vlastník, skupina, ostatní;
samotná hodnota čísla se odpovídá systému RWX (read, write, execute) neboli číst, psát, spouštět. Čtení odpovídá číslo 4, zápisu číslo 2 a spouštění 1.

Pokud tedy chceme, aby vlastník mohl vše, skupina číst a spouštět a ostatní neměli k souboru přístup nastaví vlastník souboru přístupová práva na hodnotu 750.

výpisem ls -l získáme seznam souborů i s právy vypsanými ve formátu rwxrwxrwx. V předchozím případě by to tedy bylo rwxr-x—.

Filtry a Editor vi

základní textový editor – vi

vi ……. spuštění

  • vi nazev  ……. otevření souboru

i ……. pro input

esc  ……. pro command

  • A  ……. konec řádku
  • G  ……. konec textu
  • I ……. psaní na začátek řádku
  • r  ……. rewrite znaku
  • R  ……. rewrite do vypnutí
  • x  ……. maže zprava
  • X  ……. maže zleva
  • u  ……. zpět
  • ! …….force 😀 .. (:q! )
  • Zz  ……. konec
  • cC  ……. copy
  • pP  ……. paste
  • o  ……. nový řádek dolů
  • O  ……. nový nahoru
  • J  ……. join .. spojení s následujícím řádkem
  • qQ  ……. quit
  • 5> ……. 5 znaků doprava
  • 3 dolů  ……. 3 řádky dolů
  • / ……. hledání
  • : ……. příkazová řádka
  • w  ……. uložit (w nazev, w ~/pokus)
  • r ……. recall (r nazev)
  • s ……. :s/co zmenit/cim nahradit
  • hjkl  ……. náhradní kurzorové šipky

Scripty v Unixu

Skript je běžný textový soubor spouštěný v shellu. Na prvním řádku by měl být odkaz na shell, tedy např.: #!/bin/ksh pro Korn shell (tudíž i koncovka souboru bude .ksh). Do souboru můžeme napsat jakékoliv často prováděné příkazy (výpis uživatelů seřazený podle posledního atd. atp.) nebo třeba „print „hello world!“ po spuštění příkazem „./hello.ksh“ se nám spustí skript a vypíše naše „hello world!“