Linux documentation Project (CS) / 1. Linux –příručka uživatele
Previous Content Next Up

 

4. Příkazový interpret operačního systému Unix

4.1 Příkazy operačního systému Unix

    Když se poprvé přihlásíte do operačního systému Unix, objeví se na obrazovce výzva příkazového řádku (prompt), která by mohla vypadat takto:

/home/larry#

    Podle názvu “výzva příkazového řádku” lze usuzovat, že systém na tomto místě očekává zadání příkazu. Každý příkaz operačního systému Unix představuje posloupnost písmen, čísel a znaků. Nepatří sem však mezery. Platnými příkazy operačního systému Unix jsou například: mail, cat nebo CMU_is_Number-5. Některé znaky není v příkazech povoleno používat - zmíníme se o nich později. Poznamenejme, že Unix má vlastnost označovanou jako “case-sensitive” (doslova citlivý na malá a velká písmena). To znamená, že cat a Cat jsou různé příkazy.

    Příkazový řádek je zobrazován speciálním programem, který se nazývá příkazový interpret (shell). Příkazový interpret přijímá příkazy a realizuje je. Příkazové interprety mají svůj vlastní programovací jazyk a programy napsané v tomto jazyce se nazývají skripty příkazového interpretu (shell scripts).

    Pro operační systémy Unix existují dva hlavní typy příkazových interpretůs: Bourne shell a C shell. (V současnosti existuje více než desítka různých příkazových interpretů - např. v distribuci Red Hat Linux 5.1 je pro každého uživatele k dispozici pět příkazových interpretů - ash, bash, tcsh, zsh a pdksh - ze kterých si může vybrat příkazem chsh).

    Příkazový procesor Bourne shell byl nazván podle svého autora, kterým je Steven Bourne. Ten vytvořil původní příkazový procesor pro operační systém Unix a většina příkazových procesorů vytvořených od té doby končí písmeny sh. Tím se indikuje, že další příkazové procesory jsou rozšířením původního příkazového interpretu. Dnes existuje spousta implementací původního příkazového interpretu Bourne shell. Jiný typ představují tzv. C shelly (původně je navrhl pan Bill Joy), jež se rovněž hojně používají. Obecně platí, že příkazové interprety typu Bourne shell se používají z důvodu kompatibility s originálním příkazovým interpretem, zatímco C shell se používá pro interaktivní zpracování příkazů.

    Příkazové interprety typu C shell se vyznačují tím, že mají lepší vlastnosti pro interaktivní práci, ale mají poměrně nepružné vlastnosti z hlediska programátorského.

    Operační systém Linux se distribuuje s příkazovým interpretem bash, který byl vytvořen nadací Free Software Foundation. bash je zkratkou pro Bourne Again Shell, což tradičně představuje spíše špatnou slovní hříčku typickou pro operační systém Unix. Jedná se o vylepšený příkazový procesor Bourne shell. Má podobné programátorské vlastnosti jako Bourne shell a také má spoustu dobrých vlastností převzatých z příkazového interpretu C shell. bash je implicitním příkazovým interpretem používaným v operačním systému Linux.

    Když se přihlásíte do systému Linux, pak je to právě program bash, který zobrazuje výzvu příkazového řádku. Příkazový procesor bash vás bude provázet po celou dobu práce s počítačem.

4.1.1 Typické příkazy operačního systému Unix

Prvním příkazem, se kterým se seznámíme, je příkaz cat. Máte-li jej použít, napište cat a stiskněte klávesu Enter.

/home/larry# cat

    Jestliže je nyní kurzor na následujícím řádku, pak jste zadali příkaz cat správně. Existuje několik způsobů, jak příkaz cat zadat. Některé jsou správné, jiné nikoliv. Předpokládejme, že jste se spletli:

/home/larry# ct

ct: command not found

/home/larry#

    Tímto způsobem vás příkazový interpret upozornil na to, že nemůže najít program, který by se jmenoval “ct”. Nabídne vám další výzvu příkazového řádku a očekává další příkaz. Připomeňme, že operační systém Unix je citlivý na velká a malá písmena. Příkaz CAT je rovněž chybný. Před příkaz můžete uvést libovolný počet mezer, například:

/home/larry# _ cat

    Takto zadaný příkaz je v pořádku a program cat se spustí. V příkazovém řádku také můžete pouze stisknou klávesu Enter. Ničeho se neobávejte, nic se nestane. Předpokládejme, že jste spustili program cat. Asi jste zvědavi, co dělá. Pokud si myslíte, že se jedná o nějakou hru, pak asi budete zklamáni. Tento program je velice užitečným nástrojem, i když se to na první pohled nezdá. Napište jakýkoliv text a stiskněte Enter. Pak na obrazovce uvidíte:

/home/larry# cat

Help! I'm stuck in a Linux program!

Help! I'm stuck in a Linux program!

    (Skloněným písmem je označeno to, co jsem v programu cat napsal.) Zdá se, že program pouze kopíruje text. To je někdy užitečné, ale program cat toho umí mnohem více. Pro tento okamžik program cat ukončíme a později si uvedeme příklady, kdy je mnohem užitečnějií.

    K ukončení většiny příkazů operačního systému Unix se používá kombinace kláves Ctrl+D. Touto kombinací odešlete znak konce souboru EOF (end-of-file). Alternativně lze znak EOF považovat za konec textu, avšak v této knize jej budeme považovat za konec souboru. Znak EOF signalizuje programům operačního systému Unix, že jste ukončili zadávání dat. Pro program cat to znamená, že další data nemá zpracovávat a ukončí se.

    Také si můžete vyzkoušet program sort. Jak napovídá jeho název, jedná se o program pro třídění. Jestliže zapíšete několik řádků a pak stisknete Ctrl+D, zobrazí se vám tyto řádky uspořádány. Programy tohoto druhu se nazývají filtry. Fungují tím způsobem, že nejdříve akceptují nějaký text, provedou s ním nějaké operace (například třídění) a pak modifikovaný text vypíší na obrazovce (nebo na jiném výstupním zařízení). Programy cat a sort jsou poněkud neobvyklé filtry, cat je neobvyklý v tom, že přečte text a neprovádí v něm žádně změny. Program sort je neobvyklý v tom, že čte řádky a neprovádí nic, dokud nepřečte znak EOF.

    Mnoho filtrů zpracovává data řádek po řádku - přečtou řádek, provedou nějaké modifikace a zobrazí řádek modifikovaný.

4.2 Pomozte si sami

    V operačních systémech Unix existuje příkaz man, jenž zobrazuje tzv. manuálové stránky. Originální manuálové stránky jsou pouze v anglickém jazyce, ale na jejich překladu se již pracuje. Zadejte například příkaz:

/home/larry# man cat

CAT(1) CAT(1)

NAME

cat - concentrate files and print on the standard output

SYNOPSIS

cat [-benstuvAET] [--number] [--number-nonblank]

[--squeeye-blank] [--show-nonprinting] [--show-ends]

[--show-tabs] [--show-all] [--help] [--version] [--file...]

DESCRIPTION

This manual page documents the GNU version of cat. cat

    Uvedený výpis představuje asi jednu stránku informací o příkazu cat. Nepředpokládejte, že budete okamžitě všemu rozumět. Manuálové stránky zpravidla předpokládají, že má jejich čtenář jisté znalosti o operačním systému Unix, tedy znalosti, které vy zatím nemáte. Když čtete manuálovou stránku, pak se v dolním řádku objeví blok s textem jako “--more—“ nebo “Line 1”. Jedná se o nápovědu, že k danému tématu existuje více informací.

    Man po zobrazení první stránky vyčkává, co se rozhodnete dělat dále. Chcete-li pokračovat dále v prohlížení manuálových stránek, stiskněte klávesu x- pak se vám zobrazí následující stránka. Pokud chcete program man ukončit, stiskněte klávesu Q. Pak se vrátíte do příkazového řádku příkazového procesoru, který bude očekávat zadání dalšího příkazu.

    Programu man lze také předat jisté argumenty, jež řídí jeho funkce. Předpokládejme například, že si chcete přečíst informace o všem, co souvisí s formátem Postscript (Postscript je řídící jazyk pro tisk na tiskárnách od firmy Adobe). Pak zadejte příkaz man -k ps nebo man -k Postscript. Zobrazí se vám seznam všech příkazů, systémových volání a další dokumentace pojednávající o tomto tématu. Tento postup je velmi užitečný v případě, kdy chcete nalézt nějaký nástroj, ale nevíte, kde jej hledat, nebo nevíte, zda vůbec existuje.

4.3 Ukládání informací

    Programy patřící do kategorie filtrů jsou velmi užitečné, zejména pokud patříte mezi pokročilejší uživatele. Zůstává zde však jeden problém. Jak ukládat, uchovávat a aktualizovat informace? Za tímto účelem nabízí operační systém Unix soubory a adresáře.

    Adresář je něco jako pořadač, který místo svazků papíru obsahuje soubory. Velké pořadače mohou obsahovat několik dalších menších pořadačů. V operačním systému Unix se systém adresářů a souborů nazývá souborový systém. Zpočátku je každý souborový systém tvořen jediným adresářem, který se nazývá kořenový nebo také hlavní adresář. Uvnitř tohoto adresáře se mohou vyskytovat další adresáře a uvnitř nich se opět mohou vyskytovat adresáře (ty se někdy nazývají podadresáře). V každém adresáři mohou být uloženy soubory.

    Každý soubor a každý adresář má své vlastní jméno. Jméno může být buď krátké a může se shodovat se jménem adresáře nebo souboru uloženého jinde, nebo dlouhé (tzv. jméno včetně cesty), které je v rámci souborového systému na daném disku unikátní. Příkladem krátkého jména může být joe, zatímco odpovídajícím dlouhým jménem (t.j. jménem včetně cesty) je /home/larry/joe. Posloupnost znaků v dlouhém jménu ukončená znakem / se nazývá cesta. Cesta může být dekódována do posloupnosti adresářů. Následující příklad ilustruje, jak systém dospěje k souboru /home/larry/joe:

/home/larry/joe

    První znak / indikuje kořenový adresář. Následuje adresář se jménem home, který je podadresářem kořenového adresáře.   Další je adresář larry, který je podadresářem adresáře home. Soubor joe je uvnitř adresáře larry. Cesta může odkazovat buď na adresář, nebo na soubor - joe tedy může být jak adresářem, tak i souborem. Všechny položky před krátkým jménem musejí být adresáře.

    Existuje jednoduchý způsob, jak strukturu adresářů vizualizovat. Tato vizualizace se nazývá stromový diagram a většina uživatelů asi zná stromové diagramy z operačního systému DOS (vytvářejí je známé programy pro správu souborů, jako je NORTON COMMANDER). Stromový diagram můžete vytvořit programem tree nebo v programu Midnight Commander, Linuxové obdobě Norton Commandera. Typickou stromovou strukturu adresářů používanou v operačním systému Linux znázorňuje obrázek 4.1. Poznamenejme, že zde uvedený diagram není kompletní. Úplná struktura operačního systému Linux obsahuje přes 8000 souborů! Zrovna tak platí, že zde mohou být uvedeny adresáře, jež se nevyskytují ve vaší instalaci a naopak, ve vaší instalaci mohou být adresáře, které v uvedeném obrázku uvedeny nejsou.

4.3.1 Prohledávání adresářů pomocí příkazu ls

    Nyní máte jistě představu o tom, jak jsou v operačním systému Unix organizovány adresáře a soubory. Samozřejmě budete potřebovat nějaké nástroje, pomocí nichž budete moci se soubory a adresáři manipulovat. Prvním důležitým nástrojem je příkaz ls. Jedná se o příkaz, který zobrazuje seznam souborů. Nyní zadejte příkaz ls na úrovni příkazového řádku:

/home/larry# ls

/home/larry#

    Žádný seznam se nezobrazil, což je v pořádku. Operační systém Unix pracuje přesně. Příkazu ls nebyly předány žádné parametry, proto se žádný seznam nezobrazil. Jak jsme se již zmínili, při instalaci operačního systému Linux se nainstaluje více než 8000 souborů. Kde jsou tyto soubory uloženy? Abychom pochopili používání příkazu ls, musíme si vysvětlit pojem aktuální adresář. Podle nápovědy příkazového řádku poznáte, že aktuálním adresářem je /home/larry. Zde však nejsou uloženy žádné soubory, proto příkaz ls nezobrazil žádný seznam. Zkuste si zobrazit seznam souborů uložených v hlavním adresáři:

/home/larry# ls /

bin etc lostfound proc tmp boot home misc root usr dev lib mnt sbin var

/home/larry#

    V předcházejícím příkazu “ls /” jsme programu ls předali parametr “/”. Prvním slovem v příkazu je jméno příkazu a další slova jsou parametry. Obecně platí, že parametry modifikují funkce příkazů. V případě příkazu ls se jako první parametr uvádí jméno adresáře, jehož obsah má příkaz ls zobrazit. Některé příkazy mají speciální parametry, kterým se říká volby (options) nebo přepínače (switches). Vyzkoušejte si následující příkaz:

/home/larry# ls -F /

bin/ etc/ lostfound/ proc/ tmp/ boot/ home/ misc/ root/ usr/ dev/ lib/ mnt/ sbin/ var/

/home/larry#

    Parametr -F se nazývá volba. Volba je speciální parametr, který začíná pomlčkou a modifikuje způsob provádění programu. V případě příkazu ls je parametr -F určen k rozlišení položek seznamu na adresáře, speciální soubory, programy a ostatní soubory. Každá položka končící znakem / je adresář. Později budeme hovořit o příkazu ls, který je opravdu velmi univerzální, podrobněji.

    Nyní byste si měli udělat malé cvičení. Především se naučte, jak příkaz ls pracuje. Vyzkoušejte si zobrazit obsahy jiných adresářů podle obrázku 4.1. Některé z nich budou prázdné, jiné budou obsahovat spoustu souborů. Doporučuji, abyste si vyzkoušeli příkaz ls s parametrem -F i bez něj. Například adresář /usr/local by mohl vypadat takto:

/home/larry# ls /usr/local

Acrobat3 com etc include lib man share teTeX bin doc games info libexec sbin src

/home/larry#

    Druhé cvičení bude více obecné. Spousta příkazů v operačním systému Unix se spouští podobně jako příkaz ls. Také mají nějaké parametry a nějaké volby, jež se zpravidla uvádějí jako jednoznakové řetězce za pomlčkou. Na rozdíl od příkazu ls však některé příkazy vyžadují parametry a/nebo volby. K vyjádření syntaxe příkazů budeme používat následující formu:

ls [-aRF] [adresář]

    Když budeme popisovat nový příkaz, použijeme k jeho definici podobný syntaktický zápis. Prvním slovem je příkaz (v tomto případě ls). To, co následuje za příkazem, jsou parametry. Volitelné parametry jsou uzavřeny do hranatých závorek. Tzv. meta-proměnné jsou vyznačeny skloněným písmem - jsou to slova, která musejí být nahrazena skutečnými parametry. V uvedeném příkladu je meta-proměnnou adresář. Ta by měla být nahrazena jménem skutečného adresáře.

    V případě voleb platí jiná pravidla. V syntaktické definici příkazu jsou uzavřeny v hranatých závorkách. V příkazu můžete použít kteroukoliv volbu nebo kteroukoliv jejich kombinaci. V případě příkazu ls máte tedy možnost použít osm kombinací voleb. Porovnejte výstup příkazů ls -R a ls -F.

4.3.2 Aktuální adresář a příkaz cd

pwd

    Používání adresářů může být poněkud těžkopádné - asi by se vám nelíbilo, kdybyste museli pokaždé vypisovat celou cestu, kdykoliv byste si chtěli zpřístupnit nějaký soubor. V operačním systému Unix je zaveden pojem aktuálního adresáře. V příkladech, které jsme doposud použili, je aktuálním adresářem /home/larry. Pokud chcete zjistit, jaký je skutečný aktuální adresář, zadejte příkaz pwd (print working directory). V některých případech zobrazuje nápověda příkazového řádku i jméno počítače. To je užitečné pouze tehdy, když je počítač zapojen do sítě, ve které se vyskytuje více počítačů.

mousehouse> pwd

/home/larry

mousehouse>

cd [adresář]

    Jak jste se mohli přesvědčit, příkaz pwd zobrazí aktuální adresář. Příkaz pwd je tedy velmi jednoduchý. Většina příkazů v operačním systému Unix funguje implicitně v aktuálním adresáři, který lze změnit pomocí příkazu cd. Vyzkoušejte si například příkazy:

/home/larry# cd /home

/home# ls -F

larry/ sam/ shutdown/ steve/ user1/

/home#

    Pokud vynecháte volitelný parametr adresář, pak se navrátíte do vašeho domovského adresáře, kterým je v našem případě /home/larry. Jinak se dostanete do adresáře specifikovaného prostřednictvím parametru. Například:

/home# cd

/home/larry# cd /

/# cd home

/home# cd /usr

/usr# cd local/bin

/usr/local/bin#

    Jak jste si asi všimli, příkaz cd umožňuje specifikovat buď absolutní cestu, nebo relativní cestu. Absolutní cesta začíná znakem / a musí obsahovat všechny adresáře vedoucí k výslednému adresáři, do kterého se chcete přepnout. Relativní cesta se vztahuje k vašemu aktuálnímu adresáři. V předcházejícím příkladu jsme v adresáři /usr zadali relativní adresář local/bin - local je adresář pod adresářem usr a bin je adresář pod adresářem local.

    Podobně jsme použili relativní adresář v příkazu cd home. V operačním systému Unix (podobně jako v operačním systému DOS) existují dva speciální adresáře, jež se používají pouze jako relativní. Jsou to adresáře “.” a “..”. Adresář “.” specifikuje aktuální adresář a adresář “..” specifikuje nadřazený adresář. Jedná se tedy o zkratky, které existují v každém adresáři, ale ne vždy mají přesně ten význam, jak jsme jej popsali. Například hlavní adresář má jako nadřazený adresář sebe sama.

Soubor ./chapter-1 v aktuálním adresáři by měl být identický se souborem chapter-1. Některé příkazy vyžadují zadání typu ./chapter-1, ale to není častý případ.

Ve většině případů jsou ./chapter-1 a chapter-1 identické specifikace souboru. Adresář  “..” je velmi užitečný při “pohybu” v adresářové struktuře směrem nahoru:

/usr/local/bin# cd ..

/usr/local# ls -F

archives/ bin/ emacs@ etc/ ka9q/ lib/ tcl@

/usr/local# ls -F ../src

cweb/ linux/ xmris

/usr/local#

    V tomto případě jsme se přepnuli do nadřazeného adresáře pomocí cd .. a pak jsme zobrazili obsah adresáře /usr/src z adresáře /usr/local pomocí příkazu ls -F ../src.Pro domovský adresář existuje zkratka ~. Vyzkoušejte si následující příkaz:

/usr/local# ls -F ~/

/usr/local#

    Opět jsme se přesvědčili, že v domovském adresáři nejsou žádné soubory. Užitečnost zkratky ~ pro domovský adresář vynikne zejména v případě, kdy začneme se soubory manipulovat.

4.3.3 Vytváření a odstraňování adresářů

mkdir adresář1 [adresář2 ... adresářN]

    Vytváření vlastních adresářů je v operačním systému Unix opravdu jednoduché a představuje velmi užitečný nástroj pro organizaci a údržbu souborů. K vytvoření adresáře slouží příkaz mkdir (make directory). Uveďme si jednoduchý příklad, abychom pochopili, jak příkaz mkdir funguje.

/home/larry# ls -F

/home/larry# mkdir report-1993

/home/larry# ls -F

report-1993/

/home/larry# cd report-1993

/home/larry/report-1993#

    Příkaz mkdir může akceptovat více než jeden parametr. Předpokládá, že každý z nich představuje jméno adresáře, který se má vytvořit. Opět můžete specifikovat celou cestu nebo relativní adresář. V předcházejícím příkladu jsme použili relativní adresář report-1993.

/home/larry/report-1993# mkdir /home/larry/report-1993/chap1

~/report-1993/chap2

/home/larry/report-1993# ls -F

chap1/ chap2/

/home/larry/report-1993#

rmdir adresář1 [adresář2 ... adresářN]

Jakýmsi opakem k příkazu mkdir je příkaz rmdir (remove directory). rmdir funguje přesně jako mkdir. Podívejte se na následující příklad:

/home/larry/report-1993# rmdir chap1 chap3

rmdir: chap3: No such file or directory

/home/larry/report-1993# ls -F

chap2/

/home/larry/report-1993# cd ..

/home/larry# rmdir report-1993

rmdir: report-1993: Directory not empty

/home/larry#

    Jak jste si zřejmě všimli, příkaz rmdir odmítnul odstranit adresář, který buď neexistuje nebo není prázdný. Uvědomte si, že adresář report-1993 obsahuje podadresář chap2, proto nelze adresář report-1993 odstranit.

4.4 Manipulace se soubory

    Práce s adresáři je sice zajímavá, ale stále neřeší náš problém s ukládáním, aktualizací a udržováním informací. Tento problém se řeší prostřednictvím souborů. Vytváření a editování souborů se budeme věnovat v několika následujících kapitolách. Základními příkazy pro manipulaci se soubory jsou v operačním systému Unix příkazy cp (copy), mv (move) a rm (remove).

4.4.1 Příkaz pro kopírování souborů cp

cp [-i] zdroj cíl

cp [-i] soubor1 soubor2 ... souborN cílový adresář

    Příkaz cp je v operačním systému Unix velmi důležitým a výkonným příkazem. V jedné sekundě vám umožní přemístit tolik informací, kolik jich středověký mnich přemístil za celý rok.

    Jestliže nemáte na svém pevném disku dostatek prostoru, buďte při používání příkazu cp opatrní. Nikdo nechce vidět zprávu “Disk full”, když pracuje s důležitými soubory. Příkaz cp je dále schopen přepsat důležité soubory bez jakéhokoliv varování - tomuto nebezpečí se budeme věnovat podrobněji.

    Nejprve se zaměříme na první definici příkazu cp. Prvním parametrem příkazu cp je soubor, který se má kopírovat (tzv. zdrojový soubor, source file). Druhým parametrem je soubor, který má být kopií prvního (tzv. cílový soubor, destination file). Při kopírování můžete vytvářet soubory s novým jménem nebo můžete soubory se stejným jménem kopírovat do jiných adresářů. Vyzkoušejte si následující příklady:

/home/larry# ls -F /etc/passwd

/etc/passwd

/home/larry# cp /etc/passwd .

/home/larry# ls -F

passwd

/home/larry# cp passwd frog

/home/larry# ls -F

frog passwd

/home/larry#

    Prvním příkazem cp se z adresáře /etc zkopíroval soubor passwd (jenž obsahuje jména všech uživatelů systému Unix spolu se zakódovanými hesly) do mého domovského adresáře. Toto platí pouze za předpokladu, že nepoužíváme tzv. shadow passwords, kdy jsou zakódovaná hesla uložena v souboru /etc/shadow. Příkaz cp neruší zdrojový soubor, proto jsem neudělal nic, co by nějak poškodilo systém. Nyní existují v mém systému dvě kopie souboru passwd, jedna v adresáři /etc a druhá v mém domovském adresáři /home/larry a obě kopie mají jméno passwd.

    Třetí kopii jsem vytvořil příkazem cp passwd frog. Nyní jsou v mém systému tři kopie souboru: /etc/passwd, /home/larry/passwd a /home/larry/frog. Posledně vytvořená kopie má jiné jméno, ale obsahuje stejná data.

    Příkaz cp je schopen kopírovat soubory mezi adresáři, a to v tom případě, kdy je prvním parametrem jméno souboru a druhým parametrem je jméno adresáře. Pak zůstane jméno cílového souboru shodné se jménem zdrojového souboru.

    Kopírovat soubory a přitom měnit jejich jména lze jen tehdy, když se v příkazu cp jako parametry uvedou jména souborů. S příkazem cp je spojeno jedno nebezpečí. Když například zadáte příkaz cp /etc/passwd /etc/group, vytvoří příkaz cp nový soubor group, jehož obsah bude identický s obsahem souboru /etc/passwd. Pokud by však soubor /etc/group již existoval, pak jej přepíšete bez jakéhokoliv varování a bez možnosti starou verzi souboru /etc/group obnovit.

Podívejme se na další příklad použití příkazu cp:

/home/larry# ls -F

frog passwd

home/larry# mkdir passwd_version

home/larry# cp frog passwd passwd_version

home/larry# ls -F

frog passwd passwd_version/

home/larry# ls -F passwd_version

frog passwd

home/larry#

    Jak jsem nyní použil příkaz cp? Je evidentní, že příkaz cp může akceptovat více než dva parametry (nyní jsem příkaz cp použil podle druhé definice). Příkaz cp v předcházejícím příkladu zkopíroval všechny uvedené soubory (frog a passwd) do adresáře passwd_version, který je uveden jako poslední parametr. V podstatě platí, že příkaz cp je schopen akceptovat jakýkoliv počet parametrů, přičemž prvních n-1 považuje za jména souborů a poslední považuje za jméno adresáře, do kterého se mají uvedené soubory kopírovat.

    Jestliže kopírujete v daném okamžiku více než jeden soubor, pak jej nemůžete přejmenovat kopírované soubory si uchovají svá původní jména. Co se stane, když zadáte příkaz cp frog passwd toad, kde frog a passwd jsou soubory a přitom toad není adresář? Vyzkoušejte si takový příkaz a uvidíte.

4.4.2 Odstranění souborů pomocí příkazu rm

rm [-i] soubor1 soubor2 ... souborN

    Nyní, když jsme se naučili, jak kopírovat a vytvářet soubory (později si probereme jiné způsoby vytváření souborů), bude jistě užitečné vědět, jak soubory rušit. Ve skutečnosti je to velmi jednoduché. Příkaz pro odstraňování souborů má název rm a zruší všechny soubory, jejichž jména se uvedou jako parametry.

Například:

/home/larry# ls -F

frog passwd passwd_version/

/home/larry# rm frog toad passwd

rm: toad: No such file or directory

/home/larry# ls -F

passwd_version/

/home/larry#

    Jak asi vidíte, příkaz rm je velmi nevlídný. Nejen, že se vás nezeptá, zda má uvedené soubory skutečně zrušit, ale provede zrušení existujících souborů, i když vlastně příkaz nebyl správně zadán (soubor toad neexistoval). Příkaz rm může být skutečně nebezpečný. Podívejme se na rozdíl mezi následujícími dvěma posloupnostmi příkazů:

/home/larry# ls -F

toad frog/

/home/larry# ls -F

frog

toad

/home/larry# rm frog/toad

/home/larry#

/home/larry# rm frog toad

rm: frog is a directory

/home/larry# ls -F

frog/

/home/larry#

    Pátý řádek v první posloupnosti a první řádek v druhé se liší jediným znakem. Uvedený příklad má ilustrovat, že opomenutí jediného znaku může v operačním systému Unix způsobit, že provedete něco úplně jiného, než jste původně chtěli. Proto je velmi důležité, abyste raději několikrát zkontrolovali zapsaný příkaz, než stisknete klávesu Enter.

4.4.3 Přesouvání souborů pomocí příkazu mv

mv [-i] starý nový

mv [-i] soubor1 soubor2 ...souborN adresář

    Nakonec se podívejme na příkaz pro tzv. přesouvání souborů. Příkaz má název mv a je podobný příkazu cp. Na rozdíl od příkazu cp však zdrojové soubory po jejich zkopírování odstraňuje. Příkaz mv je tedy jakousi kombinací příkazů cp a rm. Uveďme si na následujícím příkladu, jak příkaz mv funguje:

/home/larry# cp /etc/passwd .

/home/larry# ls -F

passwd

/home/larry# mv passwd frog

/home/larry# ls -F

frog

/home/larry# mkdir report

/home/larry# mv frog report

/home/larry# ls -F

report/

/home/larry# ls -F report

frog

/home/larry#

    Jak jste si pravděpodobně všimli, příkaz mv soubor přejmenuje, pokud je druhým parametrem jméno souboru. Jestliže je druhým parametrem jméno adresáře, pak se soubor přesune do nového adresáře a přitom zůstane uchováno jeho původní jméno.

    Podobně jako v případě příkazu cp musíte být při používání příkazu mv velmi opatrní. Příkaz neprovádí kontrolu, zda cílový soubor existuje nebo ne. Kdyby například v mém adresáři report již existoval soubor frog, pak by se příkazem mv frog report nejdříve zrušil soubor /report/frog a pak by se nahradil obsahem souboru ~/frog.

    Ve skutečnosti existuje možnost, jak přimět příkazy rm, cp a mv, aby vás upozorňovali na možnost přepsání či zrušení souborů. Všechny tyto příkazy akceptují volbu -i. Po uvedení této volby bude uživatel před každým zrušením souboru upozorněn. Dokonce můžete použít tzv. alias (druhé jméno) a zařídit, aby vás například příkaz rm upozorňoval na zrušení souboru, aniž uvedete volbu -i. O tom však budeme diskutovat až v oddíle 9.1.3.

Previous Content Next Up