abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Sledujte AbcLinuxu.cz na:
facebook favicon logo  Facebooku twitter favicon logo  Twitteru,   identi.ca favicon logo  Identi.ca,   rss logo  RSS
Rozšířené hledání
×
včera 22:22 | Zajímavý software
Webový prohlížeč Chrome v budoucnu asi nebude mít podporu pro online ověřování, zda nebyl HTTPS certifikát revokován (CRL). V odkazovaném článku je uvedeno několik důvodů pro tento krok, zejména pak to, že toto ověřování nemusí být spolehlivé a zpomaluje načítání stránek. Namísto toho je navrhována distribuce revokovaných klíčů přes aktualizační mechanismus prohlížeče.
Luboš Doležel (Doli) | Komentářů: 2
včera 22:18 | Zajímavý projekt
Grafický server Wayland, možný nástupce současného X Serveru, se své první stabilní verze 1.0 dočká možná už v druhé polovině tohoto roku, nejpozději však za rok. Tento plán prezentoval tvůrce Waylandu Kristian Høgsberg na konferenci FOSDEM, která během uplynulého víkendu probíhala v Bruselu.
Migilenik | Komentářů: 1
včera 22:17 | Pozvánky

Ve středu 15.2. od 18:00 proběhne na Fakultě informatiky Masarykovy univerzity v Brně únorové setkání Czech JBoss User Group. Tentokrát bude tématem vytváření opravdových Java EE aplikací s JBoss AS. Zahraničním hostem bude Pete Muir, který posluchačům ukáže, jak se taková aplikace vytváří. Více informací na wiki stránce akce.

Sešívaný | Komentářů: 0
včera 22:17 | Zajímavý projekt
Díky pomoci ze strany Google se v posledních pár dnech podařilo sepsat příručku pro začínající vývojáře v prostředí KDE. Tato kniha je dostupná nejen v podobě PDF/ePub, ale i v tištěné podobě.
Luboš Doležel (Doli) | Komentářů: 0
včera 22:14 | Zajímavý projekt
První hromadně vyráběné kousky laciného ARM minipočítače Raspberry Pi budou zhotoveny 20. února. Hned poté se započne s přepravou do Velké Británie, takže prodej by měl začít do konce měsíce. Druhou novinkou je zveřejnění datasheetu k SoC BCM2835, které je hlavním stavebním kamenem Raspberry Pi.
Luboš Doležel (Doli) | Komentářů: 0
včera 14:34 | Nová verze
Vyšla nová stabilní verze populárního ruského webového serveru nginx – 1.0.12. Seznam změn hovoří zejména o opravě několika chyb. Nově je možné v konfiguraci specifikovat verzi TLS u direktivy ssl_protocols a SSI příkaz if podporuje pojmenované zachycení (tzv. capture) v regulárních výrazech.
MMMMMMMMM | Komentářů: 5
včera 12:36 | Komunita
Phoronix upozorňuje, že svobodný ovladač Nouveau má funkční podporu pro OpenCL. Úvodní podpora se týká ovladače pro čipy NV50, tedy grafické karty GeForce 8, 9, 100, 200 a 300. Kód je zatím udržován v samostatné větvi.
Nicky726 | Komentářů: 2
včera 12:26 | Komunita
Vývojář Kubuntu Jonathan Riddell oznámil, že Canonical končí s financováním Kubuntu. Kubuntu tak bude komunitní distribucí jako jiné deriváty Ubuntu, skončí i možnost placené podpory a Jonathan se nebude moct ve své pracovní době věnovat Kubuntu.
Nicky726 | Komentářů: 46
včera 00:12 | Nová verze
Vyšla nová vanilla linuxová jádra 3.0.20 a 3.2.5. Přidán byl jediný patch, který upravuje nastavení ASPM (Active State Power Management) a tím snižuje spotřebu linuxového jádra. Posouzení nutnosti aktualizace nechává Greg Kroah-Hartman tentokrát na uživatelích.
Ladislav Hagara | Komentářů: 17
6.2. 22:56 | Nová verze
V Beta Channel se objevil Firefox 11 přinášející zajímavé novinky. Vylepšený Migration Tool nově umožňuje import informací i z prohlížeče Google Chrome, Firefox Sync zase (skrze Add-on Sync) synchronizaci doplňků mezi různými instalacemi Firefoxu. Přibyla i podpora protokolu SPDY. Vývojáře bude zajímat především nový 3D Web Inspector, který vznikl implementací rozšíření Tilt.
Migilenik | Komentářů: 0
Servery pro sdílení souborů (typu MegaUpload)
 (40%)
 (49%)
 (11%)
Celkem 498 hlasů
 Komentářů: 29, poslední včera 08:38
Rozcestník
Reklama
Autoškola testy online Levný benzín

Unixové nástroje – 19 (alias, type, expr)

27. 8. 2010 | David Watzke | Návody | 4416×

V tomto díle si představíme příkaz alias pro nastavování a vypisování tzv. aliasů, type pro výpis typu daného příkazu a expr k vyhodnocení zadaného matematického výrazu.

Obsah

alias

alias je příkaz sloužící k nastavování aliasů. Alias slouží primárně ke zkrácení delšího příkazu, například po spuštění:

alias l="ls -lF"

bude možné zavolat příkaz ls -lF spuštěním samotného l v dané instanci shellu.

Chcete-li vypsat všechny nastavené aliasy, spusťte alias bez argumentů:

$ alias
alias _update='yaourt -Syu --aur'
alias grep='grep --color=auto'
alias l='ll'
alias ll='ls -l'
alias ls='ls --color --group-directories-first -hF'
alias pacman='pacman-color'
alias su='sux -'
alias unp='aunpack'
alias vi='vim'
alias xterm='xterm -u8'

Chcete-li vypsat konkrétní alias, zadejte jeho název:

$ alias grep
alias grep='grep --color=auto'

A jak jste si již všimli v první ukázce, nastavování probíhá uvedením názvu aliasu, potom následuje rovnítko a v uvozovkách (dle potřeby) potom hodnota aliasu:

# chcete-li aby se proměnná v aliasu nahrazovala ihned,
# použijte pro hodnotu aliasu uvozovky:
alias _home="echo $HOME"

# chcete-li aby se proměnná nahrazovala teprve při spuštění
# aliasu, použijte apostrofy:
alias _home='echo $HOME'
# nebo v uvozovkách escapujte znak $
alias _home="echo \$HOME"

Ještě se sluší podotknout, že v aliasu můžete použít i jiný alias:

alias ls="ls --color=auto"
# "ll" bude ve skutečnosti "ls --color=auto -l"
alias ll="ls -l"
# "l" bude totéž jako "ll"
alias l=ll

Pro zrušení daného aliasu spusťte:

unalias nazev_aliasu

Pro zrušení všech aliasů spusťte:

unalias -a

Chcete-li, aby vámi nastavené aliasy byly dostupné pořád a ve všech instancích shellu, potom použijte konfigurační soubor shellu. Používáte-li Bash, potom to je ~/.bashrc pro daného uživatele a zpravidla /etc/bash.bashrc nebo /etc/bash/bashrc pro celý systém.

Malý tip ze specifikace na závěr: Chcete-li spustit alias přes nohup, nepůjde vám to, protože příkaz nebude interpretován jako alias. Ovšem lze to obejít pomocí:

alias nohup="nohup "

Potom už vás nic nezastaví.

type

type je příkaz sloužící k výpisu typu daného příkazu. Přesněji řečeno vypíše, jak by byl daný příkaz interpretován, kdyby byl spuštěn z daného shellu.

Existuje několik možností, ukážeme si je na příkladech:

$ type type
type je součást shellu

$ type function
function je klíčové slovo shellu

$ type amarok
amarok je /usr/bin/amarok

$ type ls
ls je alias na „ls --color --group-directories-first -hF“

$ type hello_world
hello_world je funkce
hello_world ()
{
    printf 'Hello World!\n'
}

Lze vypsat i více příkazů najednou:

$ type grep _update
grep je alias na „grep --color=auto“
_update je alias na „yaourt -Syu --aur“

To je asi tak vše, co lze napsat o standardní implementaci tohoto příkazu. Implementace type v Bashi a Z shellu (zsh) toho umí víc, díky dalším přepínačům.

S přepínačem -t umí vypsat pouze „alias“, „keyword“, „function“, „builtin“, „file“ nebo „“ podle toho, zda je příkaz alias, klíčové slovo shellu, funkce, vestavěný příkaz (součást shellu), soubor nebo neexistující příkaz. Toto se může hodit například při neinteraktivním použití v shellových skriptech.

$ type -t type function amarok ls hello_world
builtin
keyword
file
alias
function

Přepínač -a zajistí výpis všech možných interpretací příkazu.

$ type -a echo
echo je součást shellu
echo je /bin/echo

$ type -a nohup
nohup je alias na „nohup “
nohup je /usr/bin/nohup

Přepínač -f potlačí vyhledávání příkazu mezi funkcemi shellu. S přepínačem -p je buď vypsán patřičný soubor, který by byl spuštěn (pokud existuje), nebo nic.

expr

expr slouží k vyhodnocení zadaného matematického výrazu (expr je zkratkou expression, tj. anglicky výraz).

Každý operand a operátor musí být uveden jako oddělený argument.

$ expr 5 + 10
15

Mezi podporované operátory patří |, &, =, >, >=, <, <=, !=, +, -, * (krát), / (děleno), % (modulo, zbytek po dělení) a : (viz níže). Mnohé ze jmenovaných operátorů jsou zároveň ovládací znaky shellu, proto je třeba tyto znaky escapovat (uvést je do uvozovek nebo bezprostředně za zpětné lomítko). Prioritu vyhodnocení lze ovlivnit jednoduchými závorkami.

# zbytek po dělení 1024 / 86
expr 1024 % 86

# 1024 krát 1024
expr 1024 \* 1024

# (3+6) krát 8
expr "(" 3 + 6 ")" "*" 8

Operátory, jejichž návratová hodnota je typu boolean (pravda či nepravda), vracejí hodnotu 0 pro nepravda a 1 pro pravda. Mezi tyto operátory patří <, >, =, atp.

# je 5 menší než 10?
expr 5 "<" 10

Speciální operátor „:“ slouží k porovnání řetězce s jednoduchým regulárním výrazem. Hodnota, kterou tato operace vrátí, je rovna počtu znaků, které regulární výraz označil, přičemž 0 značí chybu.

$ a=1
$ expr "$a" : "[0-9]"
1

Pro čistou aritmetiku je zpravidla lepší použít příkaz bc, který zmíním v některém z příštích dílů:

echo "3*4+14/2" | bc
       

Hodnocení: 100 %

        špatnédobré        

Nástroje: Tisk bez diskuse

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

27.8.2010 01:43 Halis | skóre: 3 | blog: capacitor
Rozbalit Rozbalit vše Re: Unixové nástroje – 19 (alias, type, expr)
Reportuji chybu:

Ještě se sluší podotknout, že v aliasu můžete použít i jiný alias:

alias ls="ls --color=auto"

# "ls" bude ve skutečnosti "ls --color=auto -l"
David Watzke avatar 27.8.2010 09:03 David Watzke | skóre: 73 | blog: Blog... | Silicon Hell
Rozbalit Rozbalit vše Re: Unixové nástroje – 19 (alias, type, expr)
Chyba je na tvé straně.
www.Watzke.cz ... a nově (opět) i blog.Watzke.cz
27.8.2010 12:19 Andrej | skóre: 6
Rozbalit Rozbalit vše Re: Unixové nástroje – 19 (alias, type, expr)
ten expr regexp tester je super! velka vdaka!
Any sufficiently advanced magic is indistinguishable from technology. --Larry Niven
27.8.2010 12:27 Lada
Rozbalit Rozbalit vše poznamka pro type
Prikaz type je interni funkce shellu, proto jsou rozdilne interpretace napr. pro bash a zsh.
27.8.2010 14:24 void
Rozbalit Rozbalit vše Re: poznamka pro type
To jsem taky chtěl napsat. A myslím, že i alias je shell bultin.
27.8.2010 15:10 Lada
Rozbalit Rozbalit vše Re: poznamka pro type
To ano, staci aplikovat type alias , ale chtel jsem jen upozornit, ze zsh nezna argument -t pro type. Proto ty priklady nebudou vzdy fungovat. Ale jinak rad tento serial ctu a moc za nej dekuju.
David Watzke avatar 27.8.2010 15:38 David Watzke | skóre: 73 | blog: Blog... | Silicon Hell
Rozbalit Rozbalit vše Re: poznamka pro type
Díky za upozornění, já jsem zkoušel, zda je type v zsh taky schopné jako to v Bashi a vyzkoušel jsem jen některé přepínače a zrovna tenhle mi utekl.
www.Watzke.cz ... a nově (opět) i blog.Watzke.cz
27.8.2010 21:49 void
Rozbalit Rozbalit vše Re: poznamka pro type
Jj, i mně se tenhle seriál líbí. Pozvedává to úroveň z bahna komiksů apod.
David Watzke avatar 27.8.2010 15:37 David Watzke | skóre: 73 | blog: Blog... | Silicon Hell
Rozbalit Rozbalit vše Re: poznamka pro type
Ano, je a musí být. To vadí?
www.Watzke.cz ... a nově (opět) i blog.Watzke.cz
27.8.2010 21:44 void
Rozbalit Rozbalit vše Re: poznamka pro type
Samozřejmě nevadí, jen jsem to chtěl dodat. :) Možná by bylo dobrý to psát ke každýmu příkazu, jestli je to shell builtin, nebo samostatnej program (ale můj vkus je vlastně pro redakci nezajímavej :)).
28.8.2010 09:09 Ash | skóre: 51
Rozbalit Rozbalit vše Re: poznamka pro type
Ne že by to nebylo uvedeno hned jako první příklad (type type) :)

Založit nové vláknoNahoru

ISSN 1214-1267   Powered by Hosting 90 Server hosting
© 1999-2011 Argonit s. r. o. Všechna práva vyhrazena.