Hlavní navigace

Hrátky z řádky: mc, tail, host a další

28. 1. 2008
Doba čtení: 3 minuty

Sdílet

Podruhé se společně setkáváme u tipů a triků pro unixové systémy a jejich příkazovou řádku. Dnes se podíváme především na několik drobností, které nám ulehčí práci s populárním Midnight commanderem. Poté se více zaměříme přímo na příkazovou řádku a představíme si několik malých, ale užitečných prográmků.

Pod minulým článkem byla poměrně bouřlivá diskuze a spousta čtenářů neváhala a poslala své vlastní triky a nápady. Díky za ně, k některým věcem se vrátíme v dalších pokračováních našeho seriálu.

Midnight commander

Velice pěknou vlastností mc je rychlé hledání souborů v adresáři. V panelu si zobrazíte třeba adresář /etc. Bude nás zajímat soubor hosts. Používat pg down nebo šipky je zdlouhavé. Zmáčkněte alt + s a začněte psát slovo hosts. Listing se přesune na první soubor, který začíná slovem hosts. Někde jde použít i ctrls.

Teď si pomůžeme zkratkou, která byla zmiňována v diskuzi u minulého dílu. Chceme například takhle nalezený soubor zabalit gzipem. Můžeme třeba zkratkou ctrl + o skrýt panely (to je velmi užitečná funkce) a napsat gzip hosts. Pokud máte kurzor (kurzor asi není nejvhodnější výraz – prostě zeleně podbarvený řádek) na požadovaném souboru, stačí napsat jen gzip a potom kombinací alt + enter se do příkazového řádku vloží jméno souboru. Je to výhodné u dlouhých nebo složitějších názvů souborů.

Ctrl + u prohazuje panely. Pokud máte listing mode nastavený stejně na oba panely, nemá moc význam. Když ale máte třeba v jednom panelu full a v druhém brief, může se takové rychlé přehození panelů hodit.

Tady upozorním, že namapování některých klávesových zkratek může být v různých distribucích trošku jinak; ale věci jako ctrl + o jsou, doufám, všude stejně.

Užitečné programy a příkazy

Spousta lidí nezná u příkazu mkdir parametr -p. Představte si, že máte založit adresářovou strukturu /home/ftp/pub/install. V případě neznalosti výše zmíněného parametru vás čeká (za předpokladu, že adresář home existuje):

$ mkdir /home/ftp
$ mkdir /home/ftp/pub
$ mkdir /home/ftp/pub/install

Možná o trochu jednodušeji, když se nejprve přepnete do adresáře /home. Ale jde to ještě snadněji, výše zmiňovaný parametr založí všechny adresáře:

$ mkdir -p /home/ftp/pub/install

Na prohlížení logů je dobrý příkaz tail. Když mu nezadáme žádný parametr, zobrazí posledních 10 řádků souboru. Když chceme víc, zadejte třeba

$ tail -n 40 /var/log/maillog

Jsem líný a už dlouho vynechávám písmenko n a funguje to stejně dobře i bez něj:

$ tail -40 /var/log/maillog

Ale zde asi záleží na vaší distribuci, rozhodně vás k tomu nenavádím. Když čekáme v logu na něco konkrétního, je zbytečné tailovat takto. Zkuste

$ tail -f /var/log/maillog

Tail pak neskončí na konci souboru, ale bude čekat a pokračovat, když je do souboru něco připsáno. Ukončíme ctrl + c. Podobně funguje program head, ale zpracovává začátek souboru.

Příkaz host zná asi každý. Já ho často používám k rychlému zjištění MX záznamů. Dříve se na tuto činnost používal program (a někdo stále používá, objevil se třeba ve Windows 2K a vyšších) nslookup.

pm@minastirith pm $ nslookup
> set type=MX
> domena.cz
Server:         195.250.128.34
Address:        195.250.128.34#53

Non-authoritative answer:
domena.cz       mail exchanger = 12 mail2.ignum.cz.
domena.cz       mail exchanger = 11 mail6.ignum.cz.

Authoritative answers can be found from:
domena.cz       nameserver = ns2.ignum.cz.
domena.cz       nameserver = ns1.ignum.com.

Je to ale trošku zdlouhavé, nejprve spustit, potom zadat set type=MX a potom název domény, třeba domena.cz. Někdo použije novější program host:

$ host -t MX domena.cz

Můžeme však i vynechat parametr. Když zadáte jen

$ host domena.cz

získáte stejný výsledek. Ještě obecně k hostu:

$ host [-t typ_zaznamu] domena [server]

Typ záznamu je asi jasný, potom následuje doména, na kterou se ptáme a můžete nakonec zadat i dns server, kterého se chcete zeptat (v nslookupu se server zvolí takto:  server jmeno.serveru.cz).

Občas se stane že potřebujete najít nějaké slovo nebo číslo a nevíte, ve kterém je souboru. Můžete samozřejmě použít příkaz find, ale také můžete zkusit toto:

CS24 tip temata

$ grep -ri hledane_slovo /etc/*

Příkaz nám vyhledá v adresáři /etc i ve všech podadresářích hledané slovo a vypíše jméno souboru + obsah řádku, kde se vyskytuje. Parametr r nám zajistí rekurzivní procházení adresářů, díky i nerozlišujeme velká a malá písmena. Parametr -n se také může hodit, ve výpisu je potom i číslo řádku. Nemusíme se samozřejmě omezovat jen na slovo, můžeme použít i regulární výraz (parametr -e)

Pro dnešek je to vše. Příště se více podíváme na práci se soubory. Čeká nás jejich vypisování, třídění, spojování a rozdělování. A samozřejmě si představíme další užitečné programy.

Autor článku

Petr Macek studoval aplikovanou informatiku na Jihočeské univerzitě, pracuje jako síťový specialista ve firmě Kostax, s. r. o. Baví ho především FreeBSD, sítě a monitoring Cacti.