Linux中10个有用的命令行补齐命令
2015-09-08 本文已影响226人
7c7f58e2a6dc
在Linux系统中,输入一个命令,再按两次TAB键,就会列出所有以输入字符开头的可用命令。这并不新鲜,很可能你已经知道了这个。这个功能被称作命令补全。默认情况下,bash命令行可以自动补全文件或目录名称。不过,我们可以使bash命令行补全执行更多的操作,通过补全命令可以让它成就下一个辉煌。
这个教程说明了我们是怎样使用可编程的命令行补全功能(programmable completion)把自动补全的功能应用于选项或者命令行参数。
例如:在输入write命令之后,如果你按两次TAB按键,自动补全功能会提供执行write操作的列表。

在下面的例子中,输入telnet命令将会显示可用了主机名:


1、查看现有的bash补全命令
启用可编程的bash命令行补全功能,就可以定义一套bash补全命令。命令行补全可以用来定义bash补全命令。
来看一下现有的bash补全功能,使用完整的命令,如下:

2、Bash中标准补全的列表
Bash为linux用户默认提供了下面的标准补全命令。
变量名补全(Variablename completion)
用户名补全(Username completion)
主机名补全(Hostname completion)
Path路径补全(Pathname completion)
文件名补全(Filename completion)
我们已经在更早的一篇文章bash standard completion中讨论了这些。
3、为获取命令定义补全命令
使用-c参数定义一个补全命令来获得可使用的命令列表。在下面的例子中,为which命令定义了补全命令:

就像上面看到的,如果按”y”,所有的命令都会显示出来。





9、编写你自己的函数以实现自动补全功能
你可以声明一个函数来定义补全功能。使用-F参数,被传入到补全命令的函数名,可以执行并。例如,函数可以写成下面的样式。


10、当第一规范没有进行匹配时,就需要执行第二规范
