[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