2012-02-15 10 views
6

Zauważyłem, że czasami polecenia mogą być zakończone.W jaki sposób zaimplementowane jest zakończenie tabulacji dla poleceń Linuksa?

np. polecenie xm w xen.

wpiszesz XM [spacja] [TAB] i wypisuje poprawne opcje którymi są:

addlabel  destroy   info   network-attach resume   sysrq   vnet-delete 
block-attach dmesg   labels   network-detach rmlabel   top    vnet-list 
block-detach domid   list   network-list save   trigger   vtpm-list 
block-list  domname   loadpolicy  new    sched-credit unpause   
cfgbootpolicy dry-run   log    pause   sched-sedf  uptime   
console   dump-core  makepolicy  reboot   serve   vcpu-list  
create   dumppolicy  mem-max   rename   shutdown  vcpu-pin   
debug-keys  getlabel  mem-set   resources  start   vcpu-set   
delete   help   migrate   restore   suspend   vnet-create 

To dość śliskie!

W jaki sposób mogę zaimplementować własne uzupełnianie poleceń tab w systemie Linux?

+0

Jest to wykonywane przez powłokę. O jaką powłokę pytasz? (Zgaduję, że to bash, ponieważ jest teraz domyślny w większości dystrybucji.) – Cascabel

+0

yes bash, a teraz oznaczyłem moje pytanie bash. Czy jest to jakiś rodzaj skryptu opakowania? – Matt

+2

Wygląda jak duplikat http://stackoverflow.com/questions/5570795/how-does-bash-tab-completion-work –

Odpowiedz

7

Jest to dość szerokie pytanie, ale ogólna idea jest taka, że ​​zarejestrujesz się coś z tym albo compgen lub complete wbudowanego polecenia. Są to: both documented in the manual. W poprzedniej sekcji opisano ogólny temat programmable completion, sprawdzając, jak przetwarzane są próby ukończenia.

Aby zapoznać się z całą masą przykładów, zobacz /etc/bash_completion, która zapewnia domyślne uzupełnienie bash (poza całkowicie wbudowanymi elementami, takimi jak uzupełnianie nazw plików). Aby uzyskać jeszcze więcej przykładów, zobacz cokolwiek w /etc/bash_completion.d; są one automatycznie pozyskiwane przez /etc/bash_completion jako sposób przedłużenia domyślnego zakończenia.

-1
+1

Kiedy połowa twojej odpowiedzi jest linkiem do innego pytania, zwykle jest to znak, że powinieneś głosować, aby zamknąć jako duplikat, nie publikując odpowiedzi. (Jeśli uważasz, że drugi link jest pomocny, możesz wnieść go gdzieś na to pytanie.) – Cascabel

+0

@Jefromi Uczciwa - myślałem, że to nie to samo, z uwagi na to, że inne pytanie nie zawiera prośby o wykonanie, tylko jak to działa. Drugie ogniwo to, co myślę, odnosi się do drugiej części. –

+0

Tak, to nie jest * dokładny * duplikat, ale myślę, że jest wystarczająco blisko; wskazuje ci to we właściwym kierunku, szczególnie biorąc pod uwagę, że odpowiedź wspomina/etc/bash_completion, gdzie można znaleźć przykłady zilionów.Jeśli chcesz dodać odpowiedź na inne pytanie, koncentrując się bardziej na implementacji rzeczy rzeczywistych, uważam, że byłyby one cenne. – Cascabel

Powiązane problemy