bash 命令行补全

##############################
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]
会列出所有可用的命令

------------------------------
1.2. 用函数扩展完成
------------------------------
$ complete |grep 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 函数, 待续.

猜你喜欢

转载自blog.csdn.net/hejinjing_tom_com/article/details/128864602