Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
Obcování s ďáblem 3 - Práce se soubory
9. srpna 2001, 00.00 | Minule jsme se jen tak "z rychlíku" seznámili s příkazy ls a cd, které nabízejí (velmi zhruba) podobné služby, jako okno Finderu: zobrazují složky a soubory. Dnes se na práci se soubory podíváme blíže.
Minule jsme se jen tak "z rychlíku" seznámili s příkazy ls a cd, které nabízejí (velmi zhruba) podobné služby, jako okno Finderu: zobrazují složky a soubory. Dnes se na práci se soubory podíváme blíž.
Specifikace souborů
Připomeňme příkaz ls - ten zobrazil seznam souborů v aktivní složce. Chceme-li se ale podívat "jinam", nemusíme tam přecházet příkazem cd; namísto toho můžeme příkazu ls jako argument zadat jméno složky jejíž obsah nás zajímá. Můžeme také přímo určit soubory, jež chceme vypsat. Dnes si ukážeme finty, které na to nabízí příkazový řádek.
Cesta
Pojem cesta používáme pro seznam složek, jež "vedou" postupně od kořene až ke složce, o kterou se právě zajímáme - je to tentýž seznam, který ukáže titulek okna Finderu, jestliže jej stiskneme s přidržením klávesy Command.
V příkazovém řádku můžeme cesty zapisovat přímo; pro oddělování jednotlivých jmen se používá lomítko (dvojtečka, již pro podobný účel používaly staré Mac OSy, může být součástí jména složky nebo souboru). Chceme-li se tedy podívat např. do složky, obsahující standardní systémová písma, můžeme použít příkaz
ls /System/Library/Fonts
Pokud cesta nezačíná lomítkem, shell použije jako východisko běžnou složku (vzpomeňte si na příkaz pwd z minulého dílu). Jestliže je tedy právě aktivní náš domovský adresář, můžeme si vypsat všechny své soukromé aplikace příkazem
ls Applications
V cestě můžeme kdykoli použít také dvě tečky, ve stejném významu, v jakém jsme si je uvedli u příkazu cd - pro nadřízenou složku. Pokud tedy např. jsme v naší domovské složce, a víme, že existuje také uživatel "tom" (který nám nezakázal přístup ke svým souborům), můžeme si vypsat jeho soukromé aplikace příkazem
ls ../tom/Applications
Poslední specialita, kterou si ukážeme v tomto odstavci, je tilda ('~'): shell ji interpretuje jako "odkaz na uživatele". Jestliže za tildou je jméno, shell vyhledá domovskou složku uživatele s daným jménem; stojí-li tilda sama, reprezentuje naši domovskou složku. Předminulý a minulý příklad jsme tedy mohli napsat také takto:
ls ~/Applications ls ~tom/Applications
přičemž tyto varianty fungují nezávisle na tom, která složka je právě aktuální.
Je třeba si dát pozor na některé speciální znaky; typickým případem je mezera (patří sem ale také vykřičník, hvězdička, závorky a další - seznámíme se s nimi v budoucích dílech našeho seriálu, kde si řekneme i k čemu slouží):
ls Moje soubory
Chceme-li vypsat obsah složky "Moje soubory" takto, dočkáme se nepříjemného překvapení. Shell totiž některé znaky interpretuje speciálním způsobem; mají-li proto být brány jako součást normálního jména souboru, musíme to shellu nějak říci. Nejjednodušší je zapsat před takový znak obrácené lomítko, nebo celou cestu uzavřít do uvozovek či apostrofů:
ls Moje\ soubory ls "Moje soubory" ls 'Moje soubory'
(Každá z uvedených tří možností nabízí malinko odlišné služby; na naší úrovni se tím však zatím zabývat nebudeme, uvádím to jen pro vysvětlení, proč vůbec jsou možnosti tři.)
Doplňování jmen a vazba na GUI
Pro zadávání jmen složek (i souborů) máme k dispozici dvě velmi pohodlné doplňkové služby.
První z nich je doplňování jmen: napíšeme-li několik prvních písmen jména složky nebo souboru a stiskneme klávesu Tab, shell (tcsh nebo zsh, sh to neumí) automaticky doplní celé jméno. Pokud existuje složek či souborů se stejným začátkem více, může shell všechny zobrazit, nebo postupně cyklicky procházet všechny alternativy - to záleží na shellu a na jeho nastavení (nastavování shellů je poměrně komplikované, a proto si jej necháme na později - prozatím tuto službu používejte "jak je").
Druhá služba je ještě jednodušší: pokud myší do okna aplikace Terminal hodíme soubor nebo složku, odpovídající jméno se zapíše do příkazového řádku. Chceme-li tedy zobrazit v shellu obsah některé složky, jejíž ikonu vidíme třeba v okně Finderu, napíšeme "ls " a ikonu "hodíme do shellu".
Historie
Shelly (opět jen tcsh a zsh) nabízeji velmi pohodlné služby pro vyvolání "před chvílí použitých" příkazů; těmto službám se říká "historie". Existují dvě skupiny služeb; jedna, o něco luxusnější, ale méně pohodlná využívá právě speciálního znaku '!'; prozatím si ji vysvětlovat nebudeme. Druhá je mnohem jednodušší: prostě šipkou nahoru nalistujeme požadovaný příkaz (a samozřejmě jej můžeme měnit).
Výběr souborů
Pokud složka obsahuje souborů příliš mnoho - jako příklad budeme používat složku /etc, která obsahuje dlouhou řadu systémových souborů - můžeme chtít zobrazit jen některé z nich. To je jednoduché - stačí, zadáme-li specifikaci souboru. V nejjednodušším případě jde prostě o jméno požadovaného souboru - můžeme si tak ověřit, zda daný soubor existuje nebo ne:
cd /etc
ls nonsense
ls: nonsense: No such file or directory
ls rc.boot
rc.boot
Chceme-li všechny soubory, jejichž jméno obsahuje nějakou fixní část, použijeme hvězdičku pro 'proměnné':
ls *.conf
bootstrap.conf inetd.conf krb.conf man.conf syslog.conf
gdb.conf* kern_loader.conf krb5.conf resolv.conf
(Stručná poznámka pro případné uživatele té parodie na příkazový řádek, která se vyskytuje v MS DOSu: samozřejmě, že hvězdiček může být libovolně mnoho, a že fixní text může být jak před nimi, tak i za nimi.)
Pokud chceme omezit 'proměnnou' část, máme k dispozici navíc hranaté závorky - v nich uvedeme seznam přípustných znaků. Zajímají-li nás tedy jen ty soubory *.conf, jež začínají písmeny 'a', 'b' a 'k', můžeme napsat
ls [abk]*.conf
bootstrap.conf kern_loader.conf krb.conf krb5.conf
S využitím pomlčky můžeme určit také interval, písmena od-do:
ls [a-m]*.conf
bootstrap.conf inetd.conf krb.conf man.conf
gdb.conf* kern_loader.conf krb5.conf
Konečně, pokud by nám snad lépe vyhovovalo určit, které znaky se nesmějí na daném místě vyskytnout, použijeme jako první znak za levou hranatou závorkou "stříšku":
ls [^a-m]*.conf
resolv.conf syslog.conf
Samozřejmě, že všechny tyto "finty" můžeme stejně dobře používat v celé cestě, nejen ve jméně souboru. Chceme-li např. vypsat všechny soubory, jež jsou uloženy uvnitř kterékoli složky, jež sama leží v aktuální složce (nyní /etc), a jejichž jména obsahují písmeno 'o', můžeme použít tento příkaz:
ls */*e*
httpd/httpd.conf httpd/httpd.conf.bak httpd/httpd.conf.default mail/local-host-names
Tím pro dnešek skončíme, protože článek už začíná být nepříjemně dlouhý. Příště začneme tím, že si ukážeme jak - a proč - lze přesně ty samé "finty" používat pro libovolný příkaz nebo program, se kterým v příkazové řádce pracujeme.
Obsah seriálu (více o seriálu):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová