如何为linux命令实现制表符完成?

时间:2012-02-15 01:39:02

标签: linux bash command-line

我注意到有时命令可以完成标签。

e.g。 xen中的xm命令。

键入xm [space] [tab]并打印出有效选项 这是:

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中实现自己的tab命令完成?

4 个答案:

答案 0 :(得分:9)

这是一个相当广泛的问题,但一般的想法是你注册了compgencomplete内置的东西。他们是both documented in the manual。上一节介绍了programmable completion的一般主题,介绍了如何处理完成尝试。

对于大量示例,请参阅/etc/bash_completion,它提供bash附带的所有默认完成(超出文件名完成等完全内置的内容)。有关更多示例,请参阅/etc/bash_completion.d中的任何内容;这些内容由/etc/bash_completion自动提供,作为扩展默认完成的一种方式。

答案 1 :(得分:1)

bash

的情况下,通过使用GNU Readline library来完成此操作

答案 2 :(得分:1)

bash的智能完成由一系列脚本化的bash函数处理。在Debian,可能是Ubuntu以及其他Linux发行版上,您可以在/etc/bash_completion.d中找到系统已安装的完成。

有关此机制的官方文件位于http://www.gnu.org/software/bash/manual/bash.html#Programmable-Completion

答案 3 :(得分:-1)