Triky pro začátečníky (4)

Leoš Literák 11. 8. 2000

Již čtvrtý díl Triků se bude zabývat skládáním příkazů, rourami, přesměrováním vstupů a výstupů a podobnými triky, bez kterých se nikdy nestanete skutečnými linuxovými guru. Před tím se však ještě krátce vrátím k souborovému systému, přesněji k linkům.

Co je to link (odkaz)? V podstatě je to něco jako záložka či bookmark Netscapu. Podobně jako v tomto (nenáviděném, přesto hojně používaném) programu, kdy záložky vám šetří čas při vypisování a hlavně pamatování si adresy internetových serverů, linky souborového systému odkazují na soubory či adresáře. Každý link pak zastupuje zvolený soubor a můžete s ním pracovat téměř stejně, jako s originálním souborem.

Linky se dají rozdělit na dva typy, symbolické a pevné. Pevný link vytvoří přímý odkaz do souborového systému až na úroveň inodu. Zároveň zvedne čítač, který indikuje počet pevných linků na daný soubor. Po vytvoření pevného linku prakticky není možné rozlišit, který soubor je originální a který je jen pevný link. Pokud smažete původní soubor, pevný link zůstane zachován. Pouze se sníží čítač. Teprve až čítač skončí na nule, smaže se soubor i fyzicky.

Naproti tomu jsou symbolické linky rozdílné. Symbolické linky je možné vytvářet i na adresáře, pevné linky nikoliv. Pokud smažete cílový soubor či adresář, link přestane platit. Link můžete používat běžným způsobem, jeho editací se změní obsah cílového dokumentu. Ovšem kopírování či přesouvání symbolických linků funguje trochu odlišně. Když kopírujete symbolický link, objeví se jeho kopie na novém místě. Pokud však adresa v symbolickém linku byla relativní (../soubor.txt), link přestane platit.

Linky vytváříme příkazem ln (viz man ln). Pokud nepoužijeme parametr -s, vznikne pevný link. Symbolický link vytvoříme třeba takto: ln -s cesta/k/sou­boru/soubor.txt. Takto nám vznikne v aktuálním adresáři symbolický link na soubor.txt. Příkaz ln cesta/k/soubo­ru/soubor.txt linky/soubor.txt by vytvořil pevný link na stejný soubor v adresáři linky s názvem soubor.txt. Pevné linky není možné vytvářet na adresáře. Důvodem je nebezpečí zacyklení souborového systému. Pevné linky ani nemohou směřovat mezi různými file systémy. Například pokud byste chtěli udělat pevný link do svého domovského adresáře na soubor na dosovském disku, máte smůlu. Pevný link i jeho cíl musí být vždy na stejném oddílu. Práva symbolických linků nemusíte nastavovat. Vždy se totiž používají práva cílového souboru. Takže jestli jste uvažovali o něčem jako ln -s /etc/passwd, tak na to rovnou zapomeňte.

A nyní se konečně dostávám k modularitě příkazů pod Unixem. Linuxové příkazy je totiž možné velice jednoduše skládat za sebe. Výstup prvního programu slouží jako vstup dalšího programu, jehož výstup čte třetí program .. Možná si stále ještě neuvědomujete, jak mocné je toto schéma, ale doufám, že po přečtení následujících odstavců si je zalíbíte a nad nějakou pseudokopií od Microsoftu budete po právu ohrnovat nos.

Začněme ale od úplných základů. Jak již jistě dobře víte, příkaz ls slouží pro výpis obsahu aktuálního adresáře. (No, on se dá použít i na výpis obsahu libovolného adresáře nebo pro získání informací o vybraném souboru, ale to nebudu probírat. Pokud byste měli zájem, napište mi.) Jenže u některých adresářů se výpis nevejde na jednu obrazovku. Co teď? Pokud jste pod Xy, nejspíš zkusíte scrollbar (posouvací lištu na kraji). Pod terminálem existuje podobný trik – mačkání klávesy Page Up za současného stisku klávesy Shift. V některých jádrech / distribucích jste se takhle mohli dostat až k obrazovkám z Biosu, RedHat > 6 takovou vzdálenost nepodporuje. Bohužel netuším, jak tato vlastnost linuxové konzole funguje, ani jak se omezuje historie a proč start Xů zruší tuto paměť. Snad mi to někdo vysvětlí v diskusi pod článkem …

Každopádně ale existuje ještě jiné řešení a tím je přesměrování výstupu příkazu ls skrze rouru do příkazu more. Zkuste například ls /dev | more. Zobrazí se vám první stránka výstupu a na posledním řádku je indikováno, že můžete pokračovat dále nápisem Více (případně More, záleží na lokalizaci). Stiskem mezerníku se objeví další stránka, enter odscrolluje jen o jeden řádek. Výpis ukončíte písmenem q. More bohužel podporuje scrollování jediným směrem. Proto jako součást GNU aplikací vznikla jeho obdoba less.

Znalci angličtiny určitě ocení specifický humor autorů programu, který je schopnější než more (česky: více) a nazvali jej less (česky: méně). Pokud tedy změníte příkaz takto: ls /dev | less, získáte mnohem větší možnost pohybu. Less vám umožní jít dopředu i zpět, ovládá se nejen mezerníkem a enterem, ale můžete použít i šipky dolů a nahoru a klávesy Page Down a Page Up. Navíc podporuje i vyhledávání, takže když napíšete dopředné lomítko a text, less se pokusí najít zvolený text a zvýrazní jej tučným písmem. No, more to sice umí taky, ale less je lepší :-). Jenže less je hlavně GNU program a na komerčních Unixech jej většinou nenajdete. Tam si proto vzpomeňte na more. Oba programy je možné použít také pro prohlížení obsahu souboru. Prostě napíšete třeba less /etc/passwd a hned víte, kdo další má na počítači konto.

Hraní si s zřetězením příkazů pomocí roury bude pokračovat příště. Pokud si chcete zaexperimentovat sami, zapamatujte si znak |, kterým se oddělují jednotlivé příkazy. Zkuste si například napsat sekvenci příkazů, která vypíše tři přihlášené uživatele. Nápověda: man w, man tail.

Ohodnoťte jako ve škole:

Průměrná známka 2,73

Našli jste v článku chybu?
Zasílat nově přidané názory e-mailem
Podnikatel.cz: E-shop na mobilu? Tenhle nefunguje, k vzteku

E-shop na mobilu? Tenhle nefunguje, k vzteku

Vitalia.cz: 10 rad šéfkuchařů pro perfektní grilování

10 rad šéfkuchařů pro perfektní grilování

120na80.cz: Tady se vaří padělané léky

Tady se vaří padělané léky

DigiZone.cz: Rádio Retro spouští stream o Karlu IV.

Rádio Retro spouští stream o Karlu IV.

Lupa.cz: Přenos hokeje padal kvůli útoku, tvrdí O2

Přenos hokeje padal kvůli útoku, tvrdí O2

Lupa.cz: Jak EET vidí ajťák aneb Drahá vražda UX

Jak EET vidí ajťák aneb Drahá vražda UX

120na80.cz: Zjistěte, zda je vaše klíště infikované

Zjistěte, zda je vaše klíště infikované

120na80.cz: Jak správně vytrhnout mléčný zub?

Jak správně vytrhnout mléčný zub?

120na80.cz: 10 dezinfekcí: Vede „starý dobrý“ peroxid

10 dezinfekcí: Vede „starý dobrý“ peroxid

Root.cz: Zákon o hazardu je v rozporu s ústavou

Zákon o hazardu je v rozporu s ústavou

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

DigiZone.cz: Konec geoblokace? Ani náhodou…

Konec geoblokace? Ani náhodou…

Vitalia.cz: Mražené ryby z Makra byly falšované

Mražené ryby z Makra byly falšované

Lupa.cz: Válka e-shopů. Alza končí s Heurekou

Válka e-shopů. Alza končí s Heurekou

Vitalia.cz: 7 nemocí očí, které musíte léčit včas

7 nemocí očí, které musíte léčit včas

Vitalia.cz: Před, nebo po snídani? Kdy je lepší čistit si zuby

Před, nebo po snídani? Kdy je lepší čistit si zuby

Podnikatel.cz: Heureka pod Rockaway? Tohle musí splnit

Heureka pod Rockaway? Tohle musí splnit

Vitalia.cz: Proč máme prasklý chléb nejraději?

Proč máme prasklý chléb nejraději?

Vitalia.cz: Dnešní patolog o mrtvolu téměř nezavadí

Dnešní patolog o mrtvolu téměř nezavadí

120na80.cz: Co jí dělá? Sklerotizaci

Co jí dělá? Sklerotizaci