Portál AbcLinuxu, 10. května 2025 01:39

Dotaz: iproute2 (ip) a bash copletion

7.12.2005 13:26 Radek Hladik | skóre: 20
iproute2 (ip) a bash copletion
Přečteno: 338×
Odpovědět | Admin
Zdravim, chtel bych se zeptat, zda nekdo nevi, zda se da bash completion pouzivat i pro prikaz ip z baliku iproute2. Docela by mi to usnadnilo nauceni se "nove" syntaxe ip.

Mam FC4, bash completion je dneska stazene z http://www.caliban.org/bash/ , u jinych prikazu funguje bez problemu.

Zkousel jsem i strycka googla, ale na dotaz "bash completion iproute2" nasel jen ruzne seznamy balicku, kde se tyto dva balicky vyskytuji spolu...

Radek
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.12.2005 14:33 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: iproute2 (ip) a bash copletion
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi to nikdo nenapsal, můžeš to zkusit :-)
complete -W "link addr route rule neigh tunnel maddr mroute monitor xfrm" ip
pokud by to mělo být trochu chytřejší, potřebuješ funkci, která nastaví pole COMPREPLY
complete_ip ()
{
    COMPREPLY=(link addr route rule neigh tunnel maddr mroute monitor xfrm)
}
complete -F complete_ip ip
V bash(1) a zdrojáku bash completion se dozvíš jak tu funkci napsat.
7.12.2005 14:46 Radek Hladik | skóre: 20
Rozbalit Rozbalit vše Re: iproute2 (ip) a bash copletion
A tomu jsem se prave chtel vyhnout :-)

No ale pokud to nenajdu, a najdu trochu casu, tak si to zkusim v ramci sebevzdelani napsat :)
8.12.2005 12:16 alex
Rozbalit Rozbalit vše Re: iproute2 (ip) a bash copletion
Obavam se, ze vytvoreni takove funkce neni nic jednoducheho. Staci se podivat treba na vypis ip route help nebo ip xfrm policy help aby bylo jasne, ze syntaxe prikazu ip je dosti slozita. Pokud navic chcete, aby to umelo doplnovat napr. seznam dostupnych zarizeni po uvedeni klicoveho slova dev, pak pribude dalsi uroven slozitosti.

Tady muzete zkusit muj vytvor za vcerejsi vecer: iproute. Ulozte tento skript do adresare /etc/bash_completion.d/. Mozna vam to k necemu bude.
8.12.2005 15:16 Radek Hladik | skóre: 20
Rozbalit Rozbalit vše Re: iproute2 (ip) a bash copletion
Fiiiha, dost slusny vykon... Rikal jsem si, ze to nebude nic jednoducheho, ale aspon je to zajimava vyzva, procviceni bashovani a tak...

Vecer se na ten skriptik podivam poradne, vyzkousim a treba i nejak vylepsim (jestli to zvladnu :-) )

Radek
8.12.2005 20:37 Radek Hladik | skóre: 20
Rozbalit Rozbalit vše Re: iproute2 (ip) a bash copletion
Zkousim si s tim hrat a mam nasledujici dotaz:

Snazim se udelat doplnovani IP adres, netmasek a existujicich rout.

Pokud do pole COMPREPLY ulozim routy napr: 1.2.3.4/24 a 5.6.7.8/32, tak bash pri doplneni ukazuje jako moznost jen to 24 a 32. Pokud misto / pouziju treba x, tak to funguje bez problemu.

Kod vypada napriklad nejak takto:
ROUTES=$( ip route list | grep '^[0-9]' | sed 's/^\([0-9.-]*\) .*/\1/'  )
COMPREPLY=( $(compgen -W "$ROUTES $TYPE" -- $last) )
Veci bez lomitek funguji jak maji...

Radek
9.12.2005 09:00 alex
Rozbalit Rozbalit vše Re: iproute2 (ip) a bash copletion
Na predposlednim radku v prikazu completion -o filenames -F _iproute ip odstrante -o filenames.

Vysvetleni: bash si spravne pamatuje COMPREPLY (to muzete overit napr. tak, ze napisite prvni cislici adresy/masky/route a zmacknete TAB az potom - tentokrat bash zobrazi vsechno spravne), ale pro zobrazeni seznamu moznych pokracovani vyuziva knihovnu readline, ktera s option filenames necha jen cast po poslednim /. Zase bez -o filenames nebude spravne fungovat doplnovani nazvu souboru v ip monitor file: po doplneni nazvu adresare to vypise jednu mezeru navic.

PS. Byl bych rad, kdybyste mi pak ukazal vysledek.

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.