2012-02-15 8 views
6

私は、コマンドがタブで完了することがあることに気付きました。linuxコマンドのタブ補完機能はどのように実装されていますか?

xenのxmコマンド

あなたはXM [スペース]、[タブ]を入力し、それは有効なオプション 出力します:

かなり滑らかなのです
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 

を!

Linuxで独自のタブコマンド補完を実装するにはどうすればよいですか?

+0

これはシェルによって行われます。あなたは何の殻を求めていますか? (私はbashを推測しています、今ほとんどのディストリビューションでデフォルトになっています) – Cascabel

+0

はいbashです。私はbashで私の質問にタグ付けしました。それは何らかのラッパースクリプトですか? – Matt

+2

http://stackoverflow.com/questions/5570795/how-does-bash-tab-completion-work –

答えて

7

であるが、一般的な考え方は、あなたがいずれかのcompgenまたはcomplete組み込みで何かを登録することです。彼らはboth documented in the manualです。前のセクションでは、programmable completionという一般的なトピックについて説明し、完了の試行の処理方法について説明します。

大量の例については、/etc/bash_completionを参照してください。これは、ファイル補完のような完全に組み込まれたものを超えて、bashに付属するデフォルト補完をすべて提供します。さらに多くの例については、/etc/bash_completion.dのものを参照してください。それらは自動的にデフォルトの補完を拡張する方法として/etc/bash_completionによって供給されます。

-1

この参照の場合にGNU Readline libraryの使用を介してシェルを介して行われる:

これ:

+1

あなたの回答の半分が別の質問へのリンクである場合、それは通常、回答を投稿するのではなく、重複して投票するべき投票のサインです。 – Cascabel

+0

@Jefromi Fair十分に - 私は彼らが同じではないと思ったが、他の質問には実際に完了を求める要求が含まれていないことを考えると、それがどのように機能するかだけ。 2番目のリンクは、私が2番目の部分を参照していると思うものです。 –

+0

ええ、それは* exact * duplicateではありませんが、十分に近いと思います。特に答えが/ etc/bash_completionに言及されていれば、あなたは正しい方向にあなたを指しています。あなたが実際の補完物を実装することにもっと重点を置いて他の質問に答えを加えたいのであれば、それは貴重だと思います。 – Cascabel

1

bashのスマートな完了は、一連のスクリプト化されたbash関数によって処理されます。 Debian、おそらくUbuntu、おそらく他のLinuxディストリビューションでは、システムのインストール済み補完は/etc/bash_completion.dにあります。

このメカニズムに関する公式文書は、これはかなり広範な問題であるhttp://www.gnu.org/software/bash/manual/bash.html#Programmable-Completion

関連する問題