bash 命令行补全

文章详细介绍了Bash命令行的各种补全功能,包括命令补全、文件和目录补全、变量名、用户名和主机名的补全。此外,还提到了bash_completion包,它通过内置函数增强了bash的补全功能,并展示了如何查看和自定义这些补全设置。文章最后提及bash对configure命令的特殊处理,以及如何创建自定义的bash补全函数。
摘要由CSDN通过智能技术生成

##############################
bash 命令行的标准补全.
##############################
1. 命令补全
只记住了命令的前几个字符,敲tab 键,自动补全,常用

2. 文件和目录补全
敲完命令后,后面的参数敲了几个字符后按tab键,自动补全单词.常用

3. 变量名补全
启用方式:在美元符号 ($) 之后,按TAB 键, bash 将自动启动变量名补全
工作原理: 它会显示 env 命令中的所有变量
举例:
$echo $[tab][tab]

4. 用户名补全
启用方式:在波浪号 (~) 之后,按TAB 键, bash 将自动启动用户名补全(并不是搜索主目录下用户目录)
工作原理: 它会显示 /etc/passwd 文件中的所有可用用户名
举例:
$cd ~[tab][tab]

5. 主机名补全
启用方式:在地址符 (@) 之后,按TAB 键, bash 将自动启动主机名补全
工作原理: 它大概搜索了/etc/host 文件, 补全内容用途不大!
举例:
$ssh root@[tab][tab]

####################################
bash_completion: bash 的高级完成功能
####################################
/etc/bash_completion, 若不存在,通过apt-get安装名为 bash_completion 的包
主要是通过一些内置的bash 函数进行了功能扩充。我的版本172个函数,见后.

1.查看现有的bash-completion
$ complete -p 或者只打complete  可以列出当前定义的bash 完成

------------------------------
1.1. 用命令扩展完成.
------------------------------
例如:
$ complete |grep which
complete -c which
说明which 支持命令扩展

$ which [tab][tab]
会列出所有可用的命令

也可以用命令 $complete -p which 来查询which 的完成方式,

同样显示:

complete -c which

------------------------------
1.2. 用函数扩展完成
------------------------------
$ complete |grep ls 或者 complete -p ls
complete -F _longopt ls

ls --[tab][tab]

------------------------------
1.3. bash_completion 全貌
------------------------------
$ complete |awk '{print $1 " " $2}' |sort |uniq -c
      1 complete -a        //alias 补全
      4 complete -A        //不太理解,据说是指动作?
      1 complete -b        //buildin 命令补全
      2 complete -c        //用命令补全
    172 complete -F        //用函数功能来补全
      3 complete -j        //用后台作业来补全
      8 complete -o        // -o 是选项,后面还是function 补全
      4 complete -u        //user 补全
      2 complete -v        //variable 补全
help complete, 有收获再继续补充! ...

1.4. 怎样书写自己的bash_complete 函数, 待续.

1.5 ./configure --[tab][tab] 会列出configure 命令的所有选项.

   这是bash 对configure 的特别的关照, 它会自动调用./configure --help 并过滤出--选项呈现到你面前, 如果是./configure --list-[tab][tab], 则会显示出所有以 --list-开头的选项!!!

倘若你把configure 换成别的名字, 例如cp configure mytest, 则mytest 就没有该自动补全功能了.

所以说,bash 功能强大,很难有别的shell 与之匹敌, 就算emacs shell 相比,也只是各有千秋.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值