- Stahuj zápisky z přednášek a ostatní studijní materiály
- Zapisuj si jen kvalitní vyučující (obsáhlá databáze referencí)
- Nastav si své předměty a buď stále v obraze
- Zapoj se svojí aktivitou do soutěže o ceny
- Založ si svůj profil, aby tě tví spolužáci mohli najít
- Najdi své přátele podle místa kde bydlíš nebo školy kterou studuješ
- Diskutuj ve skupinách o tématech, které tě zajímají
Studijní materiály
Hromadně přidat materiály
tahák pro začátečníky
UOS - Úvod do operačních systémů
Hodnocení materiálu:
Vyučující: Ing. Jan Trdlička Ph.D.
Zjednodušená ukázka:
Stáhnout celý tento materiál, provede se následující jen tehdy, pokud byl
předcházející úspěšný. Jsou-li příkazy spojeny znakem „||“, provede se následující jen tehdy, pokud předcházející
selhal.
Př.: Vypište OK, pokud se zdařilo ls v aktuální adresáři:
# ls && echo "OK"
Paralelně (rourou, pipou, v koloně):
code:
# prikaz1 | prikaz2
# prikaz1 | prikaz2 | prikaz3
Příkazy běží najedou paralelně vedle sebe. Výstup (standardní výstup - 1) prvního je vstupem dalšího.
Nejpoužívanější způsob práce s BASHem. Velmi silná zbraň. Jen, aby bylo jasno v terminologii: roura, či pipa (angl.
pipe) je označení pro dva příkazy, spojené znakem „|“, pokud je příkazů takto za sebou, říkáme tomu „kolona“.
Př.: Vypište počet souborů a adresářů v aktuálním adresáři:
# ls | wc -l
Tahák na UOS 2008/2009
sestavil Tomáš „Inza“ Jukin – http://www.dvojmo.cz
3
Všechny výše uvedené způsoby lze vzájemně kombinovat:
Př.: Vypište počet položek v aktuálním adresáři, když skončí wc chybou,
napište „Chyba wc“, poté vypište výzvu „Zadejte další příkaz“:
# ls | wc –l && echo "Chyba wc"; echo "Zadejte další příkaz"
Poslední mocnou zbraní, kterou nám BASH dovoluje používat je přesměrovávání:
Každý příkaz (příkaz BASHe, externí program, či skript) má na UNIXu
automaticky 3 věci:
Standardní vstup – deskriptor 0
Standardní výstup – deskriptor 1
Standardní chybový výstup – deskriptor 2
Když nějaký příkaz spustíme (samostatně), tak mu BASH automaticky namapuje
(přiřadí) deskriptory následovně:
Na standardní vstup(0) je napojen vstup z klávesnice
Na standardní výstup(1) je napojena obrazovka
Na standardní chybový výstup(2) je napojena obrazovka
Pokud příkazy spustíme v koloně, propojí je BASH mezi sebou.
My ale můžeme také explicitně (ručně) výstup ze skriptů přesměrovat:
> - přesměruje standardní výstup(1), pokud cíl už existuje,
přepíše ho
>> - opět přesměruje standardní výstup(1), ale nepřepisuje, jen
přidává
< - nasměruje do příkazu nějaký soubor jako vstup.
> adr.txt
Př.: Načtěte obsah z klávesnice a uložte do souboru file.txt:
# cat > adr.txt stderr.txt
Př.: Zahoď chybový výstup, standardní normálně vypisuj:
# ls 2>/dev/null
Př.: Zahoď standardní výstup a pošli chybový tam, kam standardní:
# ls >/dev/null 2>&1
Př.: Prohoď standardní vstup a výstup:
# ls 3>&1 1>&2 2>&3
PŘÍKAZY – PRÁCE S PROSTŘEDÍM
type, which, who, whoami, whereis, date
type
(command TYPE) vyhledá spustitelný soubor skriptu v shellové cestě
type param1 [param2 […]]
Podobně jako příkaz which, vyhledá spustitelný soubor zadaného skriptu/programu/příkazu shellu
code:
# type man
# type which
Poznámka:
Tento příkaz je přímo zabudován v BASHi, je rychlejší než which
which
(WHICH command is this) vyhledá spustitelný soubor skriptu v shellové cestě
which param1 [param2 […]]
Vyhledá spustitelný soubor zadaného příkazu v cestě (PATH), je to samostatný program, je pomalejší než type
code:
# which who
Poznámka:
Je pomalejší než type, používat type je lepší. Pokud se c cestě vyskytne několik souborů stejného jména, vypíše se
první z nich
Tahák na UOS 2008/2009
sestavil Tomáš „Inza“ Jukin – http://www.dvojmo.cz
4
who
(WHO is logged in) vypisuje právě přihlášené uživatele s informacemi o jejich relacích
who
Vypíše seznam přihlášených uživatelů s informacemi o loginu, terminálu, času poslední aktivity a připojení
code:
# who
Poznámka:
Pokud vás zajímá jen váš login, použijte whoami
whoami
(WHO AM I) vypíše přihlašovací jméno aktuálního uživatele
whoami
Vypíše jméno aktuálně přihlášeného uživatele
code:
# whoami
whereis
(WHERE IS this) zkouší nalézt dané soubory pomocí databáze
whereis param1
Zkouší nalézt soubor(y) pomocí indexu. Není spolehlivé, neboť není zaručeno že bude index aktuální.
code:
# whereis who
Poznámka:
Příkaz nemusí být nainstalován
date
(show DATE) vypíše aktuální datum a čas
date ["+%H:%M:%S"]
Zobrazí aktuální datum a čas
Volby:
"+%H%M%S" – formát výstupu, více viz. „man –s 3C strftime“
code:
# date
# date "+%H:%M:%S"
Poznámka:
Další formátování: %Y, %M, %D, %W, …
PŘÍKAZY – NAVIGACE
cd, ls, pwd, mkdir, rmdir, cp, mv, rm, ln
cd
(Change Directory) změní aktuální adresář
cd [param1]
Změní aktuální adresář na cestu uvedenou v parametru. Není-li uvedena, změní adresář na domovský adresář
aktuálního uživatele
code:
# cd
# cd /home/user/ukoly
# cd /etc/passé
ls
(LiSt directory) zobrazí obsah adresáře
ls [-alFLhi] [param1 [param2 […]]]
Zobrazí obsah adresáře/ů zadaných v parametrech. Nejsou-li uvedeny, vypíše obsah aktuálního adresáře.
Defaultně pouze jména
Volby:
-a zobrazí i „skryté“ soubory – ty začínající tečkou (např. „.bashrc“)
-l dlouhý výpis, zobrazí nejen jména, ale také atributy (velikost,
práva, vlastníka, skupiny, typ, …)
-F výpis včetně indikace typu, za adresáře přidává „/“, atd…
-L zobrazí pouze cíle symbolických linků
-h human-friendly forma – zobrazuje velikosti v jednotkách KB, MB a GB
-i zobrazí čísla i-nodů
code:
# ls
Tahák na UOS 2008/2009
sestavil Tomáš „Inza“ Jukin – http://www.dvojmo.cz
5
# ls –al
pwd
(Personal Working Directory) zobrazí cestu k aktuálnímu adresáři
pwd
Zobrazí cestu k aktuálnímu adresáři
code:
# pwd
mkdir
(MaKe DIRectory)vytvoří adresář
mkdir [-p] [-m 0722] param1
Vytvoří adresář na místě zadaném cestou v parametru. Pokud není použita volba –p, pak musí nadřazené
adresáře již existovat
Volby:
-p vytvoří nejen poslední, ale všechny adresáře v cestě
-m dovoluje specifikovat oktalové číslo (masku) pro práva k adresáři,
implicitně se práva nastavují dle shellové proměnné UMASK
code:
# mkdir adr
# mkdir -p /home/web/sites
# mkdir –m 0722
rmdir
(ReMove DIRectory) smaže prázdný adresář
rmdir [-p] param1
Smaže prázdný(!) adresář uvedený v parametru. Pokud je uvedena volba –p, smaže i rodičovské v cestě (jsou-li
prázdné)
Volby:
-p maže i s cestou
code:
# rm adr
# rm –p /home/web/sites
Poznámka:
Pro mazání adresářů včetně obsahu použijte „rm –R“
cp
(CoPy file) kopíruje soubory z umístění A do umístění B
cp [-Rif] co kam
Kopíruje obsah parametru co do umístění dané parametrem kam
Volby:
-R rekurentní kopírování (včetně podadresářů)
-i interaktivní režim (zeptá se před přepsáním)
-f „force“ režim, přepisuje „na férovku“
code:
# cp /home/my_file /tmp
# cp –R /home/my_dir/ /dev/null
Poznámka:
Pokud má příkaz definován alias s“ –i“ a vy chcete jeho efekt vyrušit, předřaďte volání cp v rouře příkaz „yes“
mv
(MoVe file) přejmenovává/přesunuje soubory
mv [-if] co kam
Přesunuje soubor/adresář/link z umístění definovaného parametrem co do umístění v parametru kam. Pokud
provedete přesun v rámci stejného adresáře, dojde k přejmenování (ono totiž přejmenování není vlastně nic
jiného než přesun ve stejném adresáři)
Volby:
-i interaktivní režim (zeptá se před přepsáním)
-f „force“ režim, přepisuje „na férovku“
code:
# mv /home/web /home/web/novy_web
# mv stare_jmeno nove_jmeno
Poznámka:
Pokud má příkaz definován alias s“ –i“ a vy chcete jeho efekt vyrušit, předřaďte volání mv v rouře příkaz „yes“
Tahák na UOS 2008/2009
sestavil Tomáš „Inza“ Jukin – http://www.dvojmo.cz
6
rm
(ReMove file) odstraňuje soubory
rm [-Rif] co
Odstraní (smaže) soubor/adresář zadaný v parametru co
Volby:
-R rekurentní režim (mazání včetně podadresářů)
-i interaktivní režim (zeptá se před přepsáním)
-f „force“ režim, přepisuje „na férovku“
code:
# rm -R /home/web
# rm nejaky_soubor
Poznámka:
Pokud má příkaz definován alias s“ –i“ a vy chcete jeho efekt vyrušit, předřaďte volání rm v rouře příkaz „yes“
ln
(create LiNk) vytvoří odkaz (link)
ln [-s] cil odkaz
Vytvoří odkaz na nějaký soubor na disku. Odkazy mohou být „měkké“ (obdoba „zástupce“ z MS Windows) a
tvrdé (více dveří do jedné místnosti). Měkké odkazy mohou ukazovat na adresáře i jiné disky. Tvrdé nikoliv.
Tvrdý odkazy na adresář může vytvořit pouze superuživatel
Volby:
-s vytvoří měkký (symbolický) odkaz – symlink
-d vytvoří tvrdý odkaz na adresář (smí jen root)
code:
# ukazka_prikazu –f parametr1 'parametr2' "parametr3"
Poznámka:
Kam ukazuje cílový soubor můžeme zjistit např. pomocí těchto příkazů („readlink“, „ls –l“)
PŘÍKAZY – ZÁKLADNÍ FILTRY
cat, split, head, tail, cut, paste, wc, less, more
cat
(conCATenate) kopíruje stdin, spoji ho, vypíše na stdout
cat [muj_soubor]
Spojí vstup a zkopíruje na výstup, využívá se ke čtení souborů a často jako počáteční bod roury
code:
# cat /etc/passwd
# cat xa? > file.orig
Volby:
-n přidá čísla řádek
split
(SPLIT file) rozdělí vstup na části
split [–l X] [-b 10k] co
Rozdělí vstup (parametr co) na části (po bytech nebo řádcích) a uloží do nameaa, nameab...
Volby:
-b 10k po 10kB
-l 123 po 123 řádkách
-a 4 dělat 4char přípony
code:
# split -l 100 velky_soubor
Poznámka:
Opětovné spojení pomocí „ cat xa? > file.orig“
head
(HEAD of file) zobrazuje řádky od začátku souboru
Zavolá-li se bez volby, zobrazí prvních 10 řádek z výstupu
Př.: Zobrazí prvních 13 řádek:
# head -13 [file]
# head -n 13 [file]
tail
(TAIL of file) zobrazuje řádky od konce souboru
Tahák na UOS 2008/2009
sestavil Tomáš „Inza“ Jukin – http://www.dvojmo.cz
7
Př.: Zobrazí posledních 11 řádek:
# tail -11 [file]
Př.: Zobrazí soubor od 4. řádky:
# tail +4 [file]
head + tail
Př.: Vypsat 15. řádek:
# head -15 | tail -1
Př.: Vypsat řádky 15., 16., 17.:
# tail +15 | head -3
cut
(CUT into parts) rozdělí soubor po sloupcích
Volby:
-dX oddělovač bude X
-f3,4 zajímá nás sloupec 3 a 4
code:
# cut –d: -f3,5 /etc/passwd
paste
(PASTE to file) slepí soubor z částí (sloupců)
Volby:
-dX oddělovač bude X
code:
# paste –d: col1 col5
cut + paste
rozdělí sloupce do souboru a spojí
code:
# cut -d: -f1 > a
# cut -d: -f2 > b
# cut -d: -f3 > c
# paste -d ";" a b c
wc
(Word Counter) počítá řádky/slova
wc [-l] [-w] [-c] [vstup]
Spočítá řádky/slova/bajty(znaky) ze vstupu a zobrazí je. Pokud je spuštěn bez voleb, zobrazí vše. Často se
používá jako poslední prvek kolony
Volby:
-l počet řádků
-w počet slov
-c počet bajtů (znaků)
-L v každém souboru najdi nejdelší řádek a vypiš jeho délku
code:
# ls –a | wc –l
less
(show LESS) prohlížeč dlouhých souborů
less [-mNsS] [vstup]
Interaktivní prohlížečka dlouhých souborů, často se používá k prohlížení konce kolony
Volby:
-m upovídaný prompt
-N číslování řádků
-s „squezee“ režim, smrskne více mezer v jednu
-S nezalamuje řádky
Příkazy:
h, H – zobrazí nápovědu
mezera, f ^V, ^F – dopředu o jednu stránku
enter – dopředu o jeden řádek
b, ^B, ESC –b – dozadu o jednu stránku
/ - hledání podle regulárních výrazů, za lomítky napsat regulárek a dát
enter, less najde první výskyt
? – totéž co „/“, ale směrem nazpět
n – hledej dál, podle posledně nastaveného parametru
N – jako „n“, ale nazpět
V – edituj obsah implicitním editorem
code:
# cat /etc/dict/words | less
Tahák na UOS 2008/2009
sestavil Tomáš „Inza“ Jukin – http://www.dvojmo.cz
8
Tento příkaz je novější a lepší variantou již zastaralého „more“
more
(show MORE) prohlížeč dlouhých souborů
more
Interaktivní prohlížečka dlouhých souborů, tento příkaz je zastaralý a byl nahrazen mnohem výkonnější a lepší
variantou less. Zachází se s ním stejně a podobně se ovládá. Je ale méně výkonný a omezenější.
Poznámka:
Více informací viz. „less“
PŘÍKAZY – POKROČILÉ FILTRY
sort, uniq, tee, tr, grep, fgrep, egrep, cmp, comm, diff, patch, find
sort
(SORT list) seřadí vstup
sort [-n] [-tX] [-kA,B,..]
Svůj vstup seřadí a pošle na výstup. Příkaz se používá v rouře
Volby:
-n řadí numericky, ne jako string
-tX oddělovač sloupců bude „X“
-k3,4 řadí podle sloupce 3., je-li shodný, pak 4.
code:
# cat /etc/passwd | sort –t: -k3
Poznámka:
Pokud chceme použít příkaz uniq, je před ním vždy nutné použít příkaz sort
uniq
(make it UNIQue) odstraňuje duplicity ze setříděného vstupu
uniq [soubor]
Odstraňuje duplicity ze vstupu. Používá se často v rourách. Vstup musí být setříděný
code:
# ls | sort | uniq
Poznámka:
pro správnou funkci příkazu musí být vstup setříděn příkazem sort
tee
(TEE crossing) téčková odbočka, svůj vstup posílá na výstup, ale zároveň jej kopíruje
tee [soubor]
Používá se pro diagnostiku roury. Svůj vstup posílá na výstup, a zároveň jej kopíruje (buď do souboru, nebo na
výstup s deskriptorem 3)
code:
# date | tee datum | wc -l
tr
(TRanslate) překládá znaky
tr [-s] co cim
používá se v rouře. Nahrazuje znaky z parametru co znaky v parametru cim. Oba parametry MUSÍ být stejné
dlouhé.
Volby:
-s „squezze“ režim. Více výskytů znaků z parametru co nahradí pouze
jedním
Př.: Nahradí a za 1, b za 2, c za 3:
# tr abc 123
Př.: Převede na mala:
# tr '[A-Z]' '[a-z]'
Př.: Rozdělí slova na řádky:
# tr -cs "[:alpha:]" "[\n*]" file2
Poznámka:
V druhém parametru lze použít hvězdičku (*)
grep
(Glolbal search for Regular Expression and Print) hledá ve vstupu regulární výraz a tiskne ho
grep [-v] [-l] regexp
Ve svém vstupu vyhledá řádky, v nichž se vyskytuje regulární výraz zadaný parametrem regexp.
Tahák na UOS 2008/2009
sestavil Tomáš „Inza“ Jukin – http://www.dvojmo.cz
9
Volby:
-v výpis jen těch řádků, co se neshodují s regulárním výrazem
-l vypíše jen názvy souborů, ve kterých je shoda
Regulární výrazy:
jsou rekurentní (nahrazují se od nejmenšího výskytu – neboli jakmile se
to v textu vyskytne, tak se to nahradí)
. – jakýkoliv znak
[ab0-9] - výčet znaků, odpovídá právě jednomu znaku z výčtu
* - předcházející znak je uveden nula, nebo libovolně-krát
\{1,3\} - předcházející znak je uveden 1-krát až 3-krát
$ - konec řádku
^ - začátek řádku
\< - začátek slova
\> - konec slova
\(text\) - uzavře „text“ do bloku, lze se na něj pak odkazovat
\1 - doplní na místo obsah toho, co bylo nahrazeno v 1.
závorce zleva
code:
# cat file | grep 'ahoj'
# ls | grep –vl 'tento text to nebude obsahovat'
Př.: Výpis řádků obsahující dvě stejná slova:
man head | grep -i '\(\\).*\'
znak\{m,n\} - m až n výskytů znaku
Poznámka:
závorky v grepu potřeba backslashovat (\), parametry v apostrofech (')
fgrep
(Fast GREP) hledá ve vstupu text a tiskne ho
Je stejný jako grep, ale neumí regulární výrazy. Je to rychlejší varianta. Nepoužívá se, páč má malé možnosti
Poznámka:
více viz. grep
egrep
(Extended GREP) hledá na vstupu rozšířený regulární výraz a tiskne ho
Je stejný jako grep, ale pracuje s rozšířenými POSSIXovými regulárními výrazy, které známe např. z C a C++. Od
grepu se liší použitými regulárními výrazy. Příliš se nepoužívá kvůli nekompatibilitě
Vlastnosti:
Nepodporuje znaky: \(, \), \n, \, \{, \}
Navíc podporuje znaky: +, ?, |, (, )
RE1|RE2 - nebo
znak+ = 1+
znak* = 0+
cmp
(CoMPare files) porovnává soubory binárně
cmp soubor1 soubor2
Provede binární porovnání souborů, v případě úspěchu nevypíše nic, v případě neúspěchu vypíše první rozdíl.
Není v praxi moc použitelný, používá se pouze ke zjištění, zda jsou soubory shodné.
Volby:
-s tichy režim příkazu
-l dlouhý výstup, vypisují se všechny rozdíly bajt pop bajtu
code:
# cmp mujsoubor tvujsoubor
comm
(COMpare files) porovnávádva setříděné soubory
obecny zapis prikazu [nepovinne casti]
Porovnává dva setříděné soubory. Vypíše co je v prvním a není ve druhém, co je ve druhém a není v prvním a
co je v obou. Ve výstupu jsou tedy tři sloupce oddělené tabulátory
Volby:
-1 potlač sloupec 1
-2 potlač sloupec 2
-3 potlač sloupec 3
code:
# comm -12 file1 file2
Tahák na UOS 2008/2009
sestavil Tomáš „Inza“ Jukin – http://www.dvojmo.cz
10
Poznámka:
Místo tohoto příkazu se v praxi používá jeho modernější varianta diff
diff
(DIFFerence in files) porovnává soubory po řádcích, vytváří záplaty
diff souborA souborB
Porovná dva soubory po řádcích. Na výstupu dovede popsat změny v souborech tak, že vytvoří jakýsi popis
toho, jak se od jednoho ke druhému souboru došlo. Lze jej tedy použít jako jakýsi primitivní verzovací systém.
Volby:
-i case insenzitive (nebere ohled na velikost znaků)
-b ignoruje mezery
-B ignoruje prázdné řádky
code:
# diff puvodni novy > fix.txt
Poznámka:
Výstup z příkazu diff lze použít jako vstup pro program patch, který je schopen změny aplikovat
patch
(PATCH file) aplikuje záplaty, vytvořené programem diff
patch < záplata
Aplikuje záplaty (patche) vytvořené programem diff. Není třeba uvádět cíle operace, program je automaticky
načte ze souboru záplaty. Zadáním volby –R lze záplatu revertovat (vzít zpět)
Volby:
-R revertuje (vezme zpět) záplatu
code:
# patch < fix.txt
Poznámka:
Tento program lze společně s programem d
Vloženo: 1.03.2010
Velikost: 1,08 MB
Komentáře
Tento materiál neobsahuje žádné komentáře.
Copyright 2025 unium.cz


