Jemný úvod do shellů II

Transkript

Jemný úvod do shellů II
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
Jemný úvod do shellů II
1 Hledání souborů aneb kam jsem to sakra. . .
Jelikož je naším cílem naučit vás pracovat na příkazové řádce, budeme se věnovat i tématům,
která se přímo shellu netýkají. Jedním z nich je hledání zatoulaného souboru, adresáře apod.
Jde o činnost, kterou každý člověk pracující s počítači občas musí provádět. Aby mu to tvůrci
operačních systémů a programů usnadnili, snaží se vyvíjet velké množství na první pohled
naprosto nepoužitelných nástrojů. My se budeme zabývat jen těmi, které můžete najít na
UN*Xech.
1.1 Manuální hledání ;o)
Manuální hledání je nejstarší a „nejproduktivnějšíÿ (haha) způsob vyhledávání souborů. Spočívá v otrockém procházení adresářů, nejčastěji prováděném pomocí různých souborových manažerů (na MS-DOSu populární M602, Volkov Commander, Norton Commander, na UN*Xech
nejčastěji Midnight Commander), nebo jako v případě autora tohoto materiálu prostým použitím příkazu ls, aplikovaného na všechny možné adresáře. Zmiňovat, že takto své soubory
najdete opravdu rychle, je škoda slov 1 .
1.2 which
Příkaz which vyhledává soubory v adresářích uvedených v proměnné PATH. Defaultně vypíše
pouze první výskyt souboru, pokud je spuštěn s parametrem –a nebo pro pisálky –all, pak
vypíše výskyt ve všech adresářích v cestě (tj. PATH).
[jp@mujscot SUT]$ which ls
/usr/bin/ls
[jp@mujscot SUT]$ which -a ls
/usr/bin/ls
/bin/ls
which není příliš použitelný a užitečný, snad jen pokud se chcete podívat, kde že ten váš
program, který pouštíte bez zadání cesty, sídlí.
1.3 whereis
whereis je obdobou příkazu which s tím, že umí vyhledávat i manuálové stránky:
[jp@mujscot SUT]$ whereis ls
ls: /bin/ls /usr/bin/ls /usr/man/man1/ls.1.gz /usr/share/man/man1/ls.1.gz
Ačkoliv je tento příkaz o trochu šikovnější než which, je většinou ještě méně využívaný.
Alespoň u mě.
1
Věřím, že ironie je zcela zjevná ;o)
Středisko UN*Xových technologií
1
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
1.4 find
Jestliže which a whereis přirovnáme k trabantu, pak find je hotový Rolls–Royce mezi programy na vyhledávání souborů. Samozřejmě s množstvím koní pod kapotou vzrůstá problém
jej ukočírovat. find prohledává rekurzivně obsah všech adresářů, které mu zadáte, proto jeho
běh může trvat poněkud delší dobu. Základní syntaxe findu je následující:
find [cesta...] [výraz]
Cesta je jeden nebo více adresářů. Za počátek výrazu se považuje jeden ze znaků ‘-’, ‘(’,
‘)’, ‘,’, nebo ‘!’. Už se děsíte? Nebojte, bude hůř ;o). Pro začátek si ale uvedeme nejjednodušší
způsob, jak najít soubor, jehož jméno známe a víme, že „bydlíÿ kdesi v našem domovském
adresáři (jen nevíme, v jakém podadresáři). Dejme tomu, že se jmenuje seminarka.avi 2 .
[pilnystudent@peckostroj skola]$ find /home/pilnystudent -name ’seminarka.avi’
/home/pilnystudent/skola/semestralky/P/seminarka.avi
Apostrofy v tomto případě nejsou povinné, ale v některých jiných případech (používáme–li
regulární výrazivo) být mohou a dle mého názoru je dobrým zvykem je používat.
V dalším případě si ukážeme, jak vyhledat soubor, jehož jméno si tak dobře nepamatujeme:
[jp@mujscot SUT]$ find /home/jp -name ’TeamSpeak.*’
/home/jp/Desktop/TeamSpeak.desktop
/home/jp/bin/teamspeak/image/TeamSpeak.bin
/home/jp/.teamspeak2/TeamSpeak.Conf
Uvedený příklad demonstruje hledání souboru TeamSpeak s libovolnou příponou. Narozdíl
od MS–DOSu je ’.’ normálním povoleným znakem souboru, takže $find /home/jp -name
’TeamSpeak’ najde i soubory s tečkou. Ještě pro pořádek je nutno podotknout, že znak ’*’
zastupuje jakoukoliv sekvenci 0 a více znaků a může se objevit na libovolném místě výrazu.
Jeden libovolný znak zastupuje ’ ?’, ale to se moc nepoužívá (snad pro skriptování).
Dalším užitečným výrazem je iname. Ten způsobí vyhledávání podobným způsobem jako
name, ovšem bez závislosti na velikosti písmen (je tzv. case–insensitive):
[jp@mujscot SUT]$ find /home/jp -iname ’teamspeak*’
/home/jp/Desktop/TeamSpeak.desktop
/home/jp/bin/teamspeak
/home/jp/bin/teamspeak/image/TeamSpeak.bin
/home/jp/bin/teamspeak/image/manual/teamspeak.gif
/home/jp/bin/teamspeak/image/TeamSpeak
/home/jp/.teamspeak2/TeamSpeak.Conf
2
Inspiroval jsem se u lidí, kteří podobným způsobem schovávají kinematografická díla s lechtivou tématikou
;o)
Středisko UN*Xových technologií
2
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
Vyhledávání si můžeme zkrátit přepínači maxdepth a mindepth. Ty nám určují, do jaké
maximální a minimální hloubky se mají prohledávat zadané adresáře. Užitečnější z nich je
ten první, hodí např. pro vyhledávání konfiguračních souborů nebo obrázků v adresářích, kde
jsou umístěné webové stránky. Za předpokladu, že máme hrubou představu v jaké hloubce
naše soubory sídlí, nám poměrně solidně dokáže zkrátit čekání na výsledek. Ukážeme si to
v následujícím příkladě, kde si vyhledáme vše, co obsahuje písmeno ’m’ a sídlí v aktuálním
podadresáři:
[jp@beruska ~]$ find . -name ’*m*’ -maxdepth 1
./Documents
./playlist.m3u
./optimalizace
./MyTemp
./mambo_czech.tar.gz
./siemens
./temp
./lomeno_tmp
Jak je patrné, find nám našel opravdu vše, ať už jde o symlinky, adresáře, soubory atd.
Pokud bychom chtěli jen konkrétní druh souboru, použijeme přepínač type a za ním označení
typu. Pro naše účely nám stačí přepínače d – adresář, f – soubor a l – symlink. Chceme-li
tedy předchozí hledání omezit pouze na adresáře, uděláme to následovně:
[jp@beruska ~]$ find . -name ’*m*’ -maxdepth 1 -type d
./Documents
./MyTemp
./siemens
./temp
Na tomto případě je zároveň ukázáno, jak lze přepínače řetězit a skládat.
Soubory můžeme dále vyhledávat podle velikosti, data poslední změny, modifikace, přístupu, podle regulárních výrazů, nastavených práv, uživatele atd. Některé z těchto možností
jsou specifikovány číslem n, jemuž může předcházet znak ’+’ nebo ’-’. Na následujícím příkladě si vypíšeme soubory v aktuálním adresáři, ke kterým bylo přistupováno naposled před
více než 30 dny:
[jp@mujscot ~]$ find . -name ’*m*’ -maxdepth 1 -atime +30
./playlist.m3u
./mambo_czech.tar.gz
Středisko UN*Xových technologií
3
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
S nalezenými soubory můžete provádět různé akce, a to hned dvěma způsoby. Např. můžeme chtít vypsat status souboru pomocí stat (právě tak jej můžeme smazat pomocí rm,
změnit mu práva, vlastníka apod.). Použijeme předchozí příklad a ten dále rozšíříme:
[jp@mujscot ~]$ find . -name ’*m*’ -maxdepth 1 -atime +30 -exec stat {} \;
File: ‘./playlist.m3u’
Size: 53
Blocks: 8
IO Block: 4096
regular file
Device: 303h/771d
Inode: 65445
Links: 1
Access: (0600/-rw-------) Uid: ( 1000/
jp)
Gid: ( 100/
users)
Access: 2004-05-10 15:48:16.000000000 +0200
Modify: 2004-05-10 15:46:15.000000000 +0200
Change: 2004-05-10 15:46:15.000000000 +0200
File: ‘./mambo_czech.tar.gz’
Size: 6129
Blocks: 16
IO Block: 4096
regular file
Device: 303h/771d
Inode: 65782
Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/
jp)
Gid: ( 100/
users)
Access: 2004-10-30 20:36:47.000000000 +0200
Modify: 2004-10-30 19:48:52.000000000 +0200
Change: 2004-10-30 19:48:52.000000000 +0200
Složené závorky jsou nahrazeny jménem souboru tak, jak jej našel find, středník příkaz
ukončuje. Je jej nutné uvést v escape sekvenci, pozor na mezeru mezi pravou složenou závorkou
a zpětným lomítkem.
Druhou možností je použít příkaz xargs v „nahrazovacím móduÿ, tj. s přepínačem -i:
[jp@mujscot ~]$ find . -name ’*m*’ -maxdepth 1 -atime +30 |xargs -i
File: ‘./playlist.m3u’
Size: 53
Blocks: 8
IO Block: 4096
regular
Device: 303h/771d
Inode: 65445
Links: 1
Access: (0600/-rw-------) Uid: ( 1000/
jp)
Gid: ( 100/
Access: 2004-05-10 15:48:16.000000000 +0200
Modify: 2004-05-10 15:46:15.000000000 +0200
Change: 2004-05-10 15:46:15.000000000 +0200
File: ‘./mambo_czech.tar.gz’
Size: 6129
Blocks: 16
IO Block: 4096
regular
Device: 303h/771d
Inode: 65782
Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/
jp)
Gid: ( 100/
Access: 2004-10-30 20:36:47.000000000 +0200
Modify: 2004-10-30 19:48:52.000000000 +0200
Change: 2004-10-30 19:48:52.000000000 +0200
stat {}
file
users)
file
users)
To by bylo o příkazu find v tomto textu vše, ovšem zde jeho možnosti ani zdaleka nekončí.
Více najdete v manuálových stránkách (mj. se dozvíte, že je možné s argumenty provádět i
logické operace, ovšem to už rámec tohoto materiálu přesahuje). A na závěr malá poznámka
– na UNIXech bylo (a na některých je dodnes) potřeba použít u findu přepínač –print, jinak
vám na standardní výstup nic nevypíše.
Středisko UN*Xových technologií
4
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
1.5 locate
Příkaz locate využívá ke své funkci databázi souborů vytvořenou pomocí findu. Databáze
se updatuje v pravidelných časových intervalech příkazem updatedb (který si sami můžete
spustit, ovšem připravte se na pauzu na kafe ;o) ). Výhodou je, že soubor najdete okamžitě,
ať je kdekoliv (tedy téměř kdekoliv), nevýhodou pak to, že pokud není databáze aktuální,
k žádanému výsledku nedospějete. Pokud svůj počítač navíc na noc vypínáte, nejspíše bude
vaše databáze velmi archaická (při troše štěstí najde i vyhynulé druhy ;o) ) a pak nezbývá
než doporučit přeplánování úloh na jiný čas. Pro kompletnost si ukážeme jak locate funguje:
[jp@mujscot tmp]$ locate test.html
/usr/doc/gcc-3.3.4/INSTALL/test.html
/usr/doc/db4-4.2.52/html/ref/build_unix/test.html
/usr/doc/db4-4.2.52/html/ref/build_win/test.html
/usr/doc/libao-0.8.5/ao_plugin_test.html
/usr/doc/libvorbis-1.0.1/vorbisfile/ov_test.html
/usr/doc/pcre-5.0/html/pcretest.html
/usr/lib/lynx/lynx_doc/test/ISO_LATIN1_test.html
/usr/lib/lynx/lynx_doc/test/tabtest.html
Tím kapitoly věnované hledání souborů končí a my se můžeme směle vrhnout na slibovaný
shell.
2 Pokračujeme v BASHi. . .
2.1 Job Control
Pojem job control označuje řízení úloh. Úlohy můžeme spouštět buď na popředí (mají process
group ID stejné jako aktuální terminál a lze je z terminálu ovládat klávesami), nebo na
pozadí (opak předcházejícího). Na popředí se spouštějí úlohy defaultně, na pozadí je pustíte,
přepojíte–li za příkaz znak ’&’, jako v následujícím příkladě:
[jp@beruska etc]$ cat /etc/hosts &
# For loopbacking.
127.0.0.1
localhost
147.32.117.5
beruska.sh.cvut.cz beruska
# End of hosts.
[1] 3953
[1]
Done
cat /etc/hosts
Co z výpisu můžeme vyčíst? Tato úloha měla číslo 1, poslední proces, který s ní byl
asociován měl PID=3953.
Středisko UN*Xových technologií
5
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
Procesy ovšem můžeme chtít shodit na pozadí i v průběhu jeho činnosti. To uděláme tak,
že stiskneme klávesovou kombinaci CTRL–Z, která jej pozastaví (uspí, suspendne) a příkazem
bg jej hodíme na pozadí:
[jp@mujscot ~]$ yes
y
y
y
y
y
[3]+ Stopped
[jp@mujscot ~]$ bg
yes
Procesy jde taktéž hodit do popředí příkazem fg. bg i fg akceptují argumenty %n, kde n je
číslo úlohy (můžete jej získat také pomojí příkazu jobs). Pokud argument neuvedete, pracuje
se s poslední spuštěnou úlohou.
Použití jobs demonstruje následující příklad:
[jp@beruska ~]$ jobs
[1]- Stopped
[2]+ Stopped
more README.txt
yes (wd: /etc)
(wd: /tmp/BitTorrent-3.4.2)
Z výpisu můžeme poznat, že úloha 2 je aktuální (má znaménko +) a byla spuštěna v /etc.
Úloha 1 byla předchozí (znaménko –), byla spuštěna jako more README.txt. Obě úlohy jsou
stopnuté. Nyní úlohu 1 ukončíme signálem SIGTERM:
[jp@mujscot ~]$ kill %1
[1]- Stopped
(wd now: ~)
[jp@mujscot ~]$ jobs
[1]- Ukončen (SIGTERM)
[2]+ Stopped
more README.txt
(wd: /tmp/BitTorrent-3.4.2)
more README.txt
yes (wd: /etc)
(wd: /tmp/BitTorrent-3.4.2)
Jak je evidentní, s řízením úloh to není zas tak jednoduché. Cílem tohoto odstavce bylo
seznámit vás se základním ovládáním úloh, zájemci o bližší prozkoumání problematiky nechť
se podívají do manuálových stránek bashe.
Středisko UN*Xových technologií
6
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
2.2 To je vražda, napsala, aneb učíme se používat příkaz kill
Příkaz kill neslouží ani tak k zabíjení, jako k posílání signálů procesům.
Signál
SIGHUP
SIGINT
SIGQUIT
SIGILL
SIGKILL
SIGSEGV
SIGTERM
SIGSTOP
SIGCONT
Tabulka 1: Nejdůležitější signály
Hodnota
Popis
1
Donutí proces znovu načíst konfigurační soubor
2
Přerušení procesu z klávesnice (CTRL–C)
3
Ukončení z klávesnice (většinou CTRL– )
4
Neplatná instrukce
9
Zabití procesu
11
Invalid memory reference
15
Ukončovací signál (při zániku terminálu)
17, 19, 23
Pozastavení procesu (např. CTRL–Z)
19, 18, 25
Protiklad k SIGSTOP
Jak již bylo uvedeno, signály lze posílat pomocí příkazu kill a to hned několika způsoby.
Následující dva jsou ekvivalentní:
$
$
$
$
$
$
kill
kill
kill
kill
kill
kill
-s SIGKILL 1234
-s KILL 1234
-s 9 1234
-SIGKILL 1234
-KILL 1234
-9 1234
1234 je číslo procesu, které můžeme zjistit pomocí příkazu ps, nejčastěji spouštěného s
parametry aux (čili ps aux).
Protože jsou případy, kdy je nepraktické posílat signály procesům přes jejich čísla, lze při
dostatečné míře opatrnoste použít příkaz killall a číslo procesu nahradit jeho názvem:
$ killall -9 bash
Posledně uvedený příklad není moc praktický. Používat bez rozmyslu killall pod rootem
je jako hrát si se sirkou na sudu se střelným prachem.
Když už jsme se zmínili o procesech, uvedeme si pár užitečných příkazů pro práci s nimi.
Jedním z nich je již zmíněný ps, který nám vypíše existující procesy. Má dost přepínačů na to,
aby se s ním dalo chvíli hrát. Dalším je top, sloužící k průběžnému moniorování stavu systému
z hlediska běžících procesů. Také má několik přepínačů a navíc i interaktivní ovládání pomocí
kláves ;o). Strom procesů si můžete zobrazit pomocí pstree (přepínače dne –fp). Mezi procesy
lze vyhledávat pomocí příkazu pgrep, doporučuji ozkoušet přepínač –l. Signály lze procesům
posílat i pomocí pkill, který si vybere procesy stejně jako pgrep a těm pak signál pošle.
Středisko UN*Xových technologií
7
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
2.3 Přesměrování vstupu a výstupu
Se vstupem a výstupem můžeme na UN*Xech poměrně pohodlně pracovat. Abychom však
věděli, oč jde, musíme nejdříve projít trochou suché teorie. Začneme souborovými deskriptory
(file deskriptory).
2.3.1
Souborové deskriptory
Souborové deskriptory v shellu představují čísla, která zastupují konkrétní soubory. V následujícím textu budeme pracovat se třemi soubory, které jsou vytvářeny s každým spuštěným
příkazem. Soubory a jejich deskriptory jsou:
Standardní vstup – STDIN – 0
Standardní výstup – STDOUT – 1
Standardní chybový výstup – STDERR – 2
Standardní výstup a standardní chybový výstup jsou svázány s terminálem, proto na něm
můžete vidět co váš příkaz vypisuje za informace a chybová hlášení.
2.3.2
Začínáme přesměrovávat výstup
K přesměrování výstupu slouží znaménko ’>’. Příkladem může být následující zápis:
$ ls > vypis.txt
Tento zápis způsobí že vše, co by se vypsalo na STDOUT, skončí v souboru vypis.txt.
Chybová hlášení se budou nadále vypisovat na STDOUT a my je tedy uvidíme na terminálu.
Předchozí zápis je ekvivalentní se zápisem:
$ ls 1> vypis.txt
Problémem někdy může být, že ’>’ způsobí přepsání souboru. Pokud chceme do souboru
jen vložit něco na konec, uděláme to tak, že použijeme zdvojený znak většítka (čili ’>>’):
$ ls > vypis.txt
$ echo "A tenhle řádek přijde na konec souboru" >> vypis.txt
2.3.3
Začínáme přesměrovávat vstup
Přesměrování vstupu je o trochu jednodušší. Použijeme znak ’<’ a za něj uvedeme jméno
souboru, který chceme příkazu předat. Například následující dva zápisy dělají totéž:
[jp@mujscot ~]$ cat optimalizace
export CXXFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer"
export CFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer"
[jp@mujscot ~]$ cat <optimalizace
export CXXFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer"
export CFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer"
Středisko UN*Xových technologií
8
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
Přesměrování vstupu se používá spíše ve skriptování, pokud potřebujeme v běžné praxi
někam předat obsah souboru, používá se cat.
2.3.4
Přesměrování výstupu na terminál a do souboru zároveň
Pokud potřebujeme přesměrovat STDOUT do souboru a zároveň nechceme přijít o výpis na
terminálu, použijeme příkaz tee. Příkladem budiž následující řádky:
[jp@mujscot ~]$ cat optimalizace |tee test
export CXXFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer"
export CFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer"
[jp@mujscot ~]$ more test
export CXXFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer"
export CFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer"
Jak je patrné, výstup z catu byl nejen zobrazen na terminálu, ale i zapsán do souboru
test.
2.3.5
Sofistikovanější přesměrování výstupu
Chybové hlášky a standardní výstup můžeme přesměrovat do dvou samostatných souborů:
$ make 1> out.log 2> error.log
Někdy ale potřebujeme přesměrovat STDOUT a STDERR do jednoho souboru, abychom
viděli výsledky práce i chybové hlášky zároveň (je to praktičtější, neboť je zachován časový
sled). To provedeme podle následujícího příkazu:
$ make > zaznam.txt 2>&1
Pokud tento příklad budeme rozebírat vidíme, že STDERR (deskriptor 2) je přesměrován
do STDOUT (deskriptor 1). K přesměrování se při použití file deskriptorů používá znak
ampersand (’&’). A STDOUT je následně přesměrován do souboru zaznam.txt.
2.3.6
Sofistikovanější přesměrování vstupu
Vstup můžeme do souboru přesměrovat i pomocí ’<< delimiter’. Pak je vstup čten tak dlouho,
dokud se nenarazí na delimiter. Opět uvedeme dva příklady, které dělají totéž:
[jp@mujscot ~]$ mail -s ’testovaci mail s presmerovanim vstupu’ [email protected] << TEST
> Tady mohu psat mail
> dokud nenapisu to
> osklive slovo
> TEST
[jp@mujscot ~]$ echo "A takhle to jde taky, aneb proc si to komplikovat" |mail -s ’test
Středisko UN*Xových technologií
9
Kamil ’JP’ Dedecius
2.3.7
Jemný úvod do shellů II
Slovo k přesměrováním na závěr
Možná to tak nevypadá, ale přesměrovávat STDIN, STDOUT a STDERR je vcelku hračka.
Nenechte se zastrašit velkým množstvím možností, co máte k dispozici. Právě v téměř neomezených možnostech spočívá krása UN*Xů.
2.3.8
A slibovaná perlička na závěr – náš první UN*Xový vir
Nejde o vir v pravém slova smyslu, ale rychlost jeho šíření je úžasná (byť sám o sobě na to
nemá žádný mechanismus krom své jednoduchosti, krásy a dopadu :o)). Je až smutné, že velké
množství serverů a stanic je nastaveno tak, že tento kratičký kousek shellového kódu zabere.
Přitom obrana je jednoduchá (man limits, /etc/security/limits.conf).
POZOR!!! VŘELE NEDOPORUČUJI SPOUŠTĚT NÁSLEDUJÍCÍ KÓD, POKUD NEVÍTE, CO DĚLÁ!!!
V ŽÁDNÉM, OPRAVDU V ŽÁDNÉM PŘÍPADĚ NEZKOUŠEJTE TENTO KÓD NA
SERVERU. MOHLI BYSTE SE DOČKAT NEPŘÍJEMNÉHO PŘEKVAPENÍ!!!
$ : :(){ :|:&};:
Rozbor proveden na přednášce, kód pro jistotu zneschopněn pro skript–kiddies ;o)
3 Pár otázek pro kontrolu vaší pozornosti
Vyhledejte všechny soubory v /etc, co mají příponu conf, jsou novější než 50 dní a ty
zkopírujte do adresáře $HOME/etc.
Vyhledejte v adresáři /usr všechny symlinky.
Najděte v /dev všechna znaková zařízení (použijte man find).
Postupně spusťte 5 úloh a všechny je stopněte, následně spusťte na pozadí a ukončete.
Najděte pomocí pgrepu všechny procesy agetty
Následující zápis vloží STDOUT všech příkazů do jednoho souboru. Nahraďte ho jednotlivými zápisy tak, aby jste dosáhli téhož výsledku: {date; uptime; who; } > mujlog
Co dělá následující zápis? make 1>&2
Co dělá následující zápis? make >&2
K čemu je dobrý program tee? Přesměrovává i STDERR?
4 Doporučená literatura
Sams Teach Yourself Shell Programming in 24 Hours (ISBN 0–672–31481–9) man 1 bash man
1 which man 1 whereis man 1 updatedb man 1 yes man 1 locate man 1 find man 1 kill man 1
killall man 1 pkill man 1 ps man 1 stat man 1 xargs man 1 pgrep man 7 signal man 5 limits
Středisko UN*Xových technologií
10
Kamil ’JP’ Dedecius
Jemný úvod do shellů II
5 O tomto dokumentu
Tento dokument byl vysázen v systému LATEX. Autor se omlouvá za nedokonalou sazbu.
Věcné chyby reportujte na [email protected] nebo na webových stránkách projektu SUT
http://sut.sh.cvut.cz. Tento dokument byl připraven jako pomůcka k přednášce Jemný úvod
do shellů II. Můžete jej volně šířit v nezměněné podobě pod stejným názvem.
Středisko UN*Xových technologií
11

Podobné dokumenty

TeamSpeak v1.36– 22/11/2008

TeamSpeak v1.36– 22/11/2008 napr. JXP, Rocco, Yassiboy, Sambuca atd. aby vam umoznil registrovat se na tento server. Exclusively for *A·I+ + *A·II+ - Artificial Intelligence by JXP

Více

Jak si nastavit trvale připojení TeamSpeaku na známé servery. 1

Jak si nastavit trvale připojení TeamSpeaku na známé servery. 1 Jak si nastavit trvale připojení TeamSpeaku na známé servery. 1. Spustit TeamSpeak a v menu Connection vybrat položku Connect

Více

Root.cz - Triky pro zacatecniky 6

Root.cz - Triky pro zacatecniky 6 Posledne jsem trochu nakousnul presmerovani standardniho vstupu a vystupu. Dnes si tuto vybornou vlastnost probereme trochu dukladneji. Predem ale upozornuji, ze se uvedene priklady budou tykat pre...

Více

1 MECHANIKA TEKUTIN TEKUTINY

1 MECHANIKA TEKUTIN TEKUTINY vztlaková síla a vždy směřuje svisle vzhůru. Značíme ji FVZ . Například kámen ve vodě zvedneme menší silou než na vzduchu. Některé předměty jsou v kapalině nadlehčovány tak velkou silou, že plovou ...

Více

Abíčko - AbcLinuxu.cz

Abíčko - AbcLinuxu.cz rozbalí kamkoli na disk a spouští se rovnou z tohoto adresáře. Hodně příjemný a pro testy užitečný přístup. Co se podpory Oracle serverů týče, lze se připojit pouze na 9 a vyšší. Respektive s 8 Rap...

Více

Developer tutorial beta 2

Developer tutorial beta 2 (neboli process ID = číslo procesu) a pak stačí jen v dalším příkaze napsat kill čísloProcesu které nám vyplivnul pgrep restart.sh. Anebo to lze udělat rovnou jedním příkazem a to příkazem : kill $...

Více

IVAP Virtual Pilot Client

IVAP Virtual Pilot Client pro  obnovovací  frekvenci  jaké  chcete  dosáhnout.  IvAp  a  připojená  MTL  –  Multiplayer  Traffic  Library    (použitá  pro  zobrazení  ostatních  online  pilotů  s  aktuálním  letadlem  a  li...

Více

Kamil `JP` Dedecius

Kamil `JP` Dedecius Dejme tomu, že chcete mít ve svém domovském adresáři soubor BASH-PROMPT, který se nachází v /usr/doc/Linux-HOWTOs/Bash-Prompt-HOWTO. Můžete si ho ještě jednou zkopírovat, ale jak už jsme řekli, to ...

Více