千家信息网

Linux中命令补齐技巧有哪些

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要为大家展示了"Linux中命令补齐技巧有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Linux中命令补齐技巧有哪些"这篇文章吧。默认情况
千家信息网最后更新 2026年10月31日Linux中命令补齐技巧有哪些

这篇文章主要为大家展示了"Linux中命令补齐技巧有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Linux中命令补齐技巧有哪些"这篇文章吧。

默认情况下,bash命令行可以自动补全文件或目录名称。不过,我们可以使bash命令行补全执行更多的操作,通过补全命令可以让它成就下一个辉煌。

这个教程说明了我们是怎样使用可编程的命令行补全功能(programmable completion)把自动补全的功能应用于选项或者命令行参数。

例如:在输入write 命令之后,如果你按两次TAB按键,自动补全功能会提供执行write操作的列表。

代码如下:


$ write [TAB][TAB]
bala raj
jason randy
john ritu
mayla thomas
nisha www-data


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

代码如下:


$ telnet [TAB][TAB]
localhost dev-db fileserver

要让可编程命令补全功能在你的终端起作用 ,你只需要执行/etc/bash_completion即可,就像下面展示出来的操作:

代码如下:


# . /etc/bash_completion


你也可以取消/etc/bash.bashrc(对于Ubuntu Linux 13.04系统)下面的注释,这样,你就可以不需要执行上面的命令了,

代码如下:


enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi

如果你没有发现这些代码,也没有找到/etc/bash_completion文件,那么你只需要通过使用apt-get命令来安装bash_completion 包即可。

1、查看现有的bash补全命令

启用可编程的bash命令行补全功能,就可以定义一套bash补全命令。命令行补全可以用来定义bash补全命令。

来看一下现有的bash补全功能,使用完整的命令,如下:

代码如下:


complete -p | less

选项 -p 是可选择的。

2、Bash中标准补全的列表

Bash为linux用户默认提供了下面的标准补全命令。
变量名补全(Variablename completion)
用户名补全(Username completion)
主机名补全(Hostname completion)
Path路径补全(Pathname completion)
文件名补全(Filename completion)

3、为获取命令定义补全命令

使用-c参数定义一个补全命令来获得可使用的命令列表。在下面的例子中,为which命令定义了补全命令,

代码如下:


$ complete -c which
$ which [TAB][TAB]
Display all 2116 possibilities? (y or n)

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

4、为获得目录定义补全命令

使用参数d,定义一个只获得目录名称的补全命令,下面的例子中,定义了ls的补全命令

代码如下:


$ ls
countfiles.sh dir1/ dir2/ dir3/
$ complete -d ls
$ ls [TAB][TAB]
dir1/ dir2/ dir3/

就像上面看到的,连续按两次TAB,就可以看到目录名称。

5、为获得后台作业名称获得补全命令

通过使用complete命令,把获得job名称作为参数是允许的。参数j用来把job名称作为参数传到命令行,展示如下:

代码如下:


$ jobs
[1]- Stopped cat
[2]+ Stopped sed 'p'
$ complete -j ./list_job_attrib.sh
$ ./list_job_attrib.sh [TAB][TAB]
cat sed


想要了解更多的后台任务,可以通过这些案例来了解下如何管理Linux 后台任务。

6、使用前缀和后缀补全命令

补全命令可以通过被前缀(在后面添加)和后缀(添加在后面)来定义。在下面的例子中,前缀和后缀在list_job_attrib.sh中被定义。

代码如下:


$ jobs
[1]+ Stopped cat
$ complete -P '">' -S '<"' ./list_job_attrib.sh
$ ./list_job_attrib.sh [TAB][TAB]
$ ./list_job_attrib.sh ">cat<"

7、具有排除功能的文件名和目录补全

看看下面的脚本,输出output 目录下面的文件:

代码如下:


$ cd output/
$ ls
all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt
parser_mod.tmp extract.o

在上面的例子中,如果你想要排除以.tmp和.o为后缀的文件,实现ls命令的自动补全功能,可以这样:

代码如下:


$ export FIGNORE='.tmp:.o'
$ complete -f -d ls
$ cd output
$ ls [TAB][TAB]
all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt

FIGNORE 是一个shell变量,它包含了排除在自动补全队列中的文件的文件名的后缀。

8、通过IFS变量分割String字符串,得到被分割后的值。

单词表可以通过使用w参数被IFS 变量中定义的字符串分割成多个单词。最终每个单词都会被分开,被显示出来。

代码如下:


$ export IFS=" "
$ complete -W "bubble quick" ./sort_numbers.sh
$ ./sort_numbers.sh [TAB][TAB]
bubble quick

如上所述,被IFS分割之后,单词就会被扩展开,所以也可能有下面展示的这些变量。

代码如下:


$ echo $SORT_TYPE1
bubble
$ echo $SORT_TYPE2
quick
$ complete -W "$SORT_TYPE1 $SORT_TYPE2" ./sort_numbers.sh
$ ./sort_numbers.sh [TAB][TAB]
bubble quick

9、编写你自己的函数以实现自动补全功能

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

代码如下:


_parser_options()
{
local curr_arg;
curr_arg=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W '-i --incoming -o --outgoing -m --missed' -- $curr_arg ) );
}

在上面的函数中,

1.COMPREPLY :存储在按下[TAB][TAB]之后打印信息的数组。
2.COMP_WORDS :在命令行输入的单词数组
3.COMP_CWORD :COMP_WORDS 数组的索引,可以访问命令行中不用位置的单词。
4.compgen :使用-W参数,持有current_arg变量中尽可能完整的、分开的内容。
文件中parser_option 函数通过source执行如下:

代码如下:


$ source parser_option


这个函数链接到脚本解析器如下:

代码如下:


$ complete -F _parser_options ./parser.pl
$ ./parser.pl [TAB][TAB]
-i --incoming -o --outgoing -m --missed

就像上面所看到的,解析器的参数可以通过_parser_options函数生成。

注意:查看/etc/bash_completion文件,了解更多的可编程的命令行补全功能函数。

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

通过定义的补全规范,没有进行匹配,那么通过-o参数定义的completion 就会执行。

代码如下:


$ complete -F _count_files -o dirnames ./countfiles.sh

同上,通过使用_count_files 文件中定义的_count_files 函数定义的completion ,如果_count_files函数没有进行匹配,那么就会执行目录补全。

代码如下:


$ ls
countfiles.sh dir1/ dir2/ dir3/
$./countfiles.sh [TAB][TAB]
dir1 dir2 dir3

以上是"Linux中命令补齐技巧有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

命令 代码 面的 函数 功能 参数 文件 目录 单词 变量 名称 例子 后缀 内容 可以通过 可编 更多 可编程 技巧 前缀 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 云信互联网科技有限公司 鸠鸠互联网科技 互联网与科技金融数据 互联网科技金融 智慧科技互联网 互联网女皇 腾讯科技 融贸通互联网科技 深圳互联网科技怎么样 济南和联互联网科技有限公司 农村开互联网科技讲堂 创业天下互联网科技有限公司 北京华百购互联网科技有限公司 互联网行业科技股 2021互联网科技公司排名 互联网的科技体现在哪里 现代互联网科技公司 保山浩联互联网科技有限公司 东风日产互联网科技公司叫什么 北京瑞云互联网科技有限公司 广州大一互联网络科技有限公司 华中科技有哪些互联网大佬 顶级互联网科技成果有哪些 受益于互联网科技的高速发展 坤平互联网科技 互联网科技人工智能实验室 互联网与数字科技关系 三亚科技创新互联网基地 互联网科技创新创业项目 互联网科技快速发展优美句子
0