[linux] alias uvodzovky a du bash
Peter Trsko - dogmaT
dogmat na inmail.sk
Pondělí Duben 24 11:21:17 CEST 2006
Dobry den.
On Tue, 18 Apr, 2006, jan.kunder na gmail.com wrote:
> Viete mi vysvetlit preco?
V 'man bash' som nasiel:
[...]
There is no mechanism for using arguments in the replacement text.
If arguments are needed, a shell function should be used (see
FUNCTIONS below).
[...]
Premenne $1 az $9 su pocas expanzie o aku sa pokusas neni totiz
nastavene na parametre, ktore predavas. V celom prikaze ktory zadas
do cmdline bashu sa len nazov prikazu nahradi textom ktory je uvedeny
v aliase. Priklad takejto situacie:
$ alias nieco='nieco ine a dlhsie ako len nieco'
$ nieco a b c d
ten posledny prikaz je to iste ako by si vykonal:
$ nieco ine a dlhsie ako len nieco a b c d
Inymi slovami parametre, kt. predas su len pridane na konciec toho co
je v aliase definovane ako nahrada.
Ak si chces pozriet niekedy, ze preco ti nieco taketo nefunguje je
dobra vec si to namiesto spustania a zistovania vysledkov proste
pozriet. Pozriet sa to da obycajnym zaradenim prikazu echo pred
prikaz a dolezitou pomockou byva si nechat vypisat " (uvodzovky) pred
a po casti, kt. je zaujimava (da sa tym potom urcit, kt. casti berie
ako logicky celok).
Pre inspiraciu:
$ alias duhm='echo du -h --max-depth=\"`echo $1`\"'
Dosledok toho vsetkeho (a tak ako sa pisalo v man-e) je treba pouzit
funkciu:
duhm() {
du -h --max-depth=$1
}
Este drobnost na zaver. To preco ti to davalo take zvlastne vystupy je
preto, ze si pouzil alias nieco="nieco ine" a uzavrel si to do
uvodzoviek (") a nie apostrofov ('), preto ti sekvenciu `echo $1`
vykonalo este predtym ako sa dany alias nastavil a v nom si uz mal
len hodnotu daneho vyrazu. Ukazka:
$ echo '$1='\"$1\"
$1=""
$ alias duhm="echo du -h --max-depth=`echo $1`"
$ duhm 2 3 4
du -h --max-depth= 2 3 4
$ set 1
$ alias duhm="echo du -h --max-depth=`echo $1`"
$ duhm 2 3 4
du -h --max-depth=1 2 3 4
$ set 2
$ duhm 2 3 4
du -h --max-depth=1 2 3 4
Prajem prijemny zvysok dna.
--
(dogmaT | The ASCII ()
(icq 303140614) | Ribbon Campaign /\
(jabber dogmat_at_njs_dot_netlab_dot_cz) |
(mail dogmat_at_dogmat_dot_us) | Say NO to HTML and
(web http://dogmat.us)) | Word docs in email
Další informace o konferenci linux