LINUXZONE






 >> Hlavní stránka

(1751/28.09.2010)


 >> Administrace

(161/05.08.2010)


 >> Literatura

(312/14.09.2010)


 >> Bezpečnost

(347/17.09.2010)


 >> Programování

(307/19.04.2010)


 >> Distribuce

(98/16.09.2010)


 >> Síťování

(86/03.06.2010)


 >> Lokalizace

(10/15.09.2004)


 >> Aplikace

(176/12.08.2010)


 >> Multimedia

(32/31.03.2006)


 >> Hardware

(45/02.03.2007)


 >> Začínáme

(229/09.09.2010)


 >> Aktuálně

(564/20.09.2010)


 >> RELAX

(213/28.09.2010)


 >> Jinde vyšlo

přehled ostatních serverů




 Coolhousing




Coolhousing - Vas poskytovatel dedikovanych serveru




 Přihlášení




Login:
Heslo:
 uložit v prohlížeči


Nejste-li ješte zaregistrováni, můžete tak učinit zde.





 Vyhledávání




Hledaný výraz:
v klíčových slovech
v titulku
v anotaci
v textu








 Reklama









 Servis




*   Vaše náměty a připomínky
Máte k Linuxzone.cz nějaké připomínky nebo náměty? Našli jste na stránkách chybu? Dejte nám o tom vědět pomocí formuláře nebo v diskuzi.
Komentářů: 60
*   Podpořte Linuxzone.cz
Chcete podpořit náš server umístěním odkazu nebo zveřejněním backendu? Zde najdete vše potřebné.
*   Pište pro Linuxzone.cz
Máte zájem podílet se na obsahu Linuxzone.cz ať už jako redaktoři nebo i jinak? Dejte nám o sobě vědět!





 Aktuálně z bezpečnosti




-- 
6.12.2005, 19:01
Na serveru informit.com vyšla ukázková kapitola týkající se práce s řetězci z knihy Secure Coding in C and C++. (lz)

-- 
3.12.2005, 12:34
Bugtraq: Format String Vulnerabilities in Perl Programs. (lz)

-- 
3.12.2005, 12:32
Linux Advisory Watch December 2nd 2005. (lz)

-- 
23.10.2005, 13:28
Rozhovor na téma klasické zálohování versus CDP. (lz)

-- 
23.10.2005, 13:24
Linux Advisory Watch October 21st 2005. (lz)

další >>





 Aktuálně o software




-- 
6.12.2005, 19:07
Potřebujete-li pod linuxem rozchodit bezdrát založený na čipsetech Broadcom 43xx, konečně existuje linuxový ovladač. (lz)

-- 
6.12.2005, 19:04
Byla uvolněna verze Xen 3.0.0 virtualizační technologie XEN. (lz)

-- 
6.12.2005, 18:59
Byla uvolněna verze X11R6.9/X11R7 RC 3 grafickérho rozhraní X Window System. (lz)

-- 
3.12.2005, 12:45
Co je nového okolo projektu Amanda (open source zálohovací software)? Více na osnews.com. (lz)

-- 
3.12.2005, 12:40
Jak to akuálně v linuxu vypadá s podporou SATA.. (lz)

další >>





 Aktuálně z IT




-- 
3.12.2005, 12:51
Novellu se daří prodej linuxových produktů, oproti loňskému roku se Novell dočkal výrazného nárůstu. (lz)

-- 
3.12.2005, 12:48
Třetí verzi licence GPL by měla být publikována během jara 2007. (lz)

-- 
23.10.2005, 13:20
V Peru nyní mají zákon, který umožňuje nasazení open source software ve vládní správě. (lz)

-- 
23.10.2005, 13:14
Proč se Microsoft bojí Google? (lz)

-- 
27.9.2005, 22:01
Peru má zákon podporující free software. (lz)

další >>





 Nejčtenější články









 Nejlepší články









 Anketa




Používáte nějaké rozšíření bezpečnostního modelu linuxového jádra?

Openwall (17%)

LIDS (11%)

Pax/Grsecurity (3%)

SELinux (6%)

RSBAC (1%)

jiné (1%)

používám standardní jádro (62%)







Linuxzone.cz - server o Linuxu pro programátory, administrátory a fanoušky.
Provozuje společnost Impossible.
ISSN: 1213-8738





BASH & jak se v něm neztratit

V novém seriálu, který se teď bude na Linuxzone pravidelně objevovat, se zaměříme na jeden z nejrozšířenějších Linuxových shellů - BASH. Postupně se probereme všemi jeho taji a prozkoumáme nejrůznější zákoutí tohoto mocného nástroje, který je o hodně víc než jen interpret příkazů...

Jednou z nejsilnějších Unixových zbraní je shell. Kdo si někdy v MS Windows otevřel "MS DOS Shell", může si myslet, že Unixové shelly, mezi něž patří i BASH, budou něčím obdobným. Avšak tento názor není zdaleka přesný.

Unixový shell je velmi univerzální nástroj, pomocí něhož může uživatel nejen jednoduše komunikovat se systémem a ovládat jej, ale především ho může využít také jako programovací jazyk, tedy ke psaní nejrůznějších skriptů, které mu v konečném důsledku výrazně usnadní práci s řešením nějakého problému.

Existuje celá řada shellů, které se v mnoha věcech mohou lišit. Troufám si říct, že nejrozšířenějšími shelly v Linuxu jsou BASH a TCSH. To potvrzují i výsledky ankety, v níž jste před časem na Linuxzone mohli hlasovat (86% hlasujících preferuje BASH). Každý z nich má něco navíc oproti ostatním a nabízí určité specifické možnosti, které jiný nenabízí. V základních věcech se však chovají téměř úplně stejně. V našem seriálu se budeme věnovat shellu BASH.

Skoro každý seriál o programování začíná nudnou kapitolou o historii a vývoji daného jazyka nebo nástroje. Pokusím se tento trend porušit, abychom se už dnes dostali k nějakým praktickým záležitostem. Ve zkratce snad jen řeknu, že BASH (Bourne-Again Shell) je rozšířením BSH (Bourne Shell), který se dříve hojně používal snad na všech Unixech. BSH nedisponoval některými důležitými vlastnostmi, jako např. pokročilejší editací příkazové řádky nebo správou úloh. BASH je jedním z nástupců tohoto nástroje a efektivně řeší a odstraňuje nedostatky BSH. (pozn.: Seznam všech shellů, které jsou dostupné ve vašem systému můžete najít v souboru /etc/shells; do každého z těchto shellů se přepnete tak, že jednoduše napíšete jeho název.)

Než přikročíme ke psaní skriptů a dalším pokročilým operacím, díky nimž si shelly získaly takovou popularitu, musíme se nejprve co nejvíce sblížit s BASHem a pochopit principy jeho fungování.

1. Pohyb v historii příkazů

Začneme tím, že se podíváme na ukládání historie příkazů. Přepněte se do nějakého okna konzole. Měli byste vidět výzvu příkazového řádku. Já ji budu pro jednoduchost nahrazovat znakem dolaru, tedy $.

Nyní napište samostatně několik příkazů. Například ls (enter), ps (enter), w (enter). Když se teď budeme chtít probírat historií příkazů a znovu použít například příkaz ls, stačí jen třikrát stisknout šipku nahoru a máme ho opět na příkazové řádce. Tímto způsobem tedy listujeme v historii. Samozřejmě, že když si to rozmyslíme a budeme chtít raději vypsat procesy, stačí stisknout šipku dolů a jsme na ps.

Může se stát, že ve vašem systému nebudou šipky při pohybu v historii reagovat, resp. nebudou pro pohyb v historii použitelné. V takovém případě zkuste použít následující příkaz:

$ set -o emacs

Od této chvíle by měl být váš problém vyřešen a šipky by měly reagovat správně. Když už máme nastaven Emacsový styl procházení historie, neměli bychom také opomenout kombinaci CTRL+R. Když v shellu zadáte tuto kombinace, můžete v historii vyhledat příkaz, jehož podobou si nejste jisti. Stačí jen zadat část tohoto příkazu a v historii bude objeven (je to elegantnější a přeci jen jednodušší než cat .bash_history| grep hledany_text).

2. Výpis historie příkazů

Umíme se v historii pohybovat pomocí šipek. Jak skvělé... Co takhle si ale historii vypsat, abychom měli přehled v tom, co vlastně máme za možnosti. K tomu slouží příkaz history. Jestli mohu doporučit, používejte spíše zápis history| tail, který vypíše posledních deset použitých příkazů. V opačném případě se vypíše kompletní historie, která může být velmi dlouhá.

Výpis příkazů vypadá jednoduše. Na levé straně máme označení příkazu pořadovým číslem v historii, kde jsou příkazy počítány od prvního vzestupně.

3. Spuštění příkazu z historie

Ne vždycky může být výhodné prohledávání historie pomocí šipek. Někdy je jednoduší jen odkázat shell na číslo příkazu z historie (tento příkaz může být například velmi daleko od současné pozice a je tedy mnohem jednodušší nechat si vypsat historii a následně spustit příkaz pomocí jeho identifikátoru než hodinu ťukat na šipku nahoru). Zvolený příkaz z historie vyvoláme pomocí příkazu ! následovaného pořadovým číslem v historii. Tedy například !356 spustí příkaz, který se v historii nachází na 356. místě.

Vcelku zajímavou možností je také použití příkazu !-x, kde x je pozice příkazu v historii odzadu. Například tedy !-16 spustí šestnáctý příkaz odzadu (= od současné pozice) bez ohledu na jeho identifikační číslo.

Vykřičník má mnoho použití a můžeme jej uplatnit i ve variantě !text, kdy bude spuštěn poslední příkaz z historie, který začíná specifikovaným textem. Tedy například !ls může spustit ls -la, apod. Další variantou je použití !?text?, kdy bude vyhledán a spuštěn poslední příkaz v historii, který obsahuje specifikovaný text.

Abych nebyl obviněn ze zatajování informací, uvedu ještě, že můžeme použít příkaz !!, pomocí kterého spustíme poslední provedený příkaz v historii. Je to tedy jakási obdoba šipky nahoru.

Další zajímavostí je také možnost spuštění většího počtu příkazů automaticky. Tedy vlastně znovuspuštění určité části historie. Tuto část můžete předem vyeditovat a upravit dle svých požadavků. Slouží k tomu příkaz fc. Nejjednodušší variantou je, že spustíte pouze fc a v defaultním textovém editoru (nejčastěji Vi) se vám objeví poslední příkaz. Ten můžete dle libosti upravit a při skončení práce s editorem bude proveden.

Užitečnější možností je zadání rozmezí v historii, tedy fc od do, kde od představuje startovní pozici (číslo příkazu v historii) a do koncový bod. V editoru se pak objeví příkazy, které se nachází v tomto rozmezí, opět je můžete upravit a po opuštění editoru budou postupně provedeny.

4. Výpis příkazu z historie

V předchozím oddíle jsme si uvedli několik možností, jak spustit nějaký příkaz z historie. Co však uděláme, když chceme příkaz jenom vypsat? Můžeme chtít například vypsat poslední uvedený příkaz nebo padesátý příkaz odzadu. Jak to ale uděláme, abychom jej nespustili?

Je to velmi prosté. Použijeme příkaz echo. Tato utilita vrací jako svůj výstup zadaný text nebo zpracované funkční proměnné. Například tedy pro výpis padesátého příkazu odzadu stačí napsat echo !-50 nebo pro výpis posledního použitého příkazu echo !! (nebo jednoduše stiskneme šipku nahoru :-)).

5. Délka historie a její ukládání

Když si vypíšete nastavení vašeho systému, najdete v něm proměnné HISTSIZE a HISTFILE. Stačí napsat set| grep hist, resp. echo $HISTSIZE a echo $HISTFILE a sami uvidíte. Proměnná HISTSIZE určuje velikost historie na vašem systému. Tedy počet příkazů, který bude do historie zaznamenán. HISTFILE zase určuje cílový soubor, kde se bude historie hledat a kam se bude ukládat.

Obě tato nastavení můžete dle svých požadavků změnit. Stačí napsat HISTSIZE=xxx, kde xxx představuje konkrétní číselnou hodnotu. Obdobně lze změnit také proměnná HISTFILE.

Myslím, že pro dnešek by to stačilo. Ukázali jsme si nejjednodušší prvky a příkazy shellu BASH. V příští části se podíváme na další zajímavosti.

Další části seriálu:

Autor: Martin Kysela, 21. 11. 2002, 00:00
Sekce Programování, Komentářů: 6
Průměrné hodnocení: 0,13

o Poslat e-mailem
o Tisk článku
o Uložit do profilu


 Přispějte nám




Líbil se Vám tento článek? Můžete ho ocenit zavoláním na tel. číslo 906 460 134.
Cena hovoru za 1 minutu je 46 Kč.





 Hodnocení článku




Článek hodnotím jako:  [1] výborný   [2] dobrý   [3] průměr   [4] špatný   [5] hrůza  





 Komentáře




--

Tomas, 27. 11. 2002 14:54
upresneni












--

Pavouk, 23. 11. 2002 00:50
hist












--

Martin Kysela, 21. 11. 2002 11:33
ad HIST & hist












--

Jan Valenta, 21. 11. 2002 11:22
poznamka k historii












--

David Häring, 21. 11. 2002 10:51
RE: příkaz fc












--

lizarda, 21. 11. 2002 05:03
No nevim...















PŘIDAT KOMENTÁŘ ZOBRAZ VŠE >>










2002 © Impossible, s.r.o.   >> Kontaktujte redakci >> Právní upozornění >> Reklama