Portál AbcLinuxu, 10. května 2025 01:39
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 ipV bash(1) a zdrojáku bash completion se dozvíš jak tu funkci 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.
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.