Portál AbcLinuxu, 2. prosince 2025 15:00
complete -W "link addr route rule neigh tunnel maddr mroute monitor xfrm" ippokud 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.
No ale pokud to nenajdu, a najdu trochu casu, tak si to zkusim v ramci sebevzdelani napsat :)
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.
)
Radek
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
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.