在使用bash命令行时,在提示符下,输入某个命令的前面几个字符, 然后按TAB
键,就会列出以这几个字符开头的命令供我们选择。 不光如此,还可以进行参数补全,但只限于文件参数,当输入到参数部分时,按TAB
键, 就会列出以这个参数开头的文件路径供我们选择。
bash提供了一个complete
内建命令,它的用途是规定参数怎么自动补全。 有了它,第三方开发的命令就可以根据自己的实际情况指定自动提示功能了!
查看详细的自动补全规则:
man complete
bash-completion
通过一个复杂的脚本实现可编程的补全程序,减少系统管理员日常维护工作,减少差错,提高工作效率。 使用它,你只需要做简单的配置,其他复杂配置都让该软件自己做了。
bash-completion
在GitHub上的网址:https://github.com/scop/bash-completion
操作系统 | 包管理器 | 安装命令 |
---|---|---|
macOS | HomeBrew | brew install bash-completion |
GNU/Linux | HomeBrew | brew install bash-completion |
apt | sudo apt-get install -y bash-completion | |
CentOS | yum | sudo yum install -y bash-completion |
dnf | sudo dnf install -y bash-completion | |
openSUSE | zypper | sudo zypper install -y bash-completion |
Alpine Linux | apk | sudo apk add bash-completion |
pacman | sudo pacman -Syyu --noconfirm |
实际上,要想让bash-completion
起作用,必须在bash启动的时候, 加载一段名字为bash_completion
的bash脚本! 而对于使用了不同的安装方法,这个脚本的位置也不同:
如果你使用的是apt-get或者yum进行安装的, 那么bash_completion
这个脚本文件的位置在/usr/local/etc/bash_completion
如果你使用的是HomeBrew进行安装的, 那么bash_completion
这个脚本文件的位置在~/.HomeBrew/etc/bash_completion
如果你使用的是HomeBrew进行安装的, 那么bash-completion
这个脚本文件的位置在/usr/local/etc/bash_completion
配置到bash的环境变量配置文件中,最好配置到/etc/profile
里面, 这样就是全部用户都支持了!如果配置到~/.bash_profile
里面,就只能当前用户使用了。
下面是一个配置示例:
[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion
配置的方法很简单,其实就是判断这个文件是否存在,如果存在就使用.
命令加载这个文件, 需要注意的是.
命令是bash特有的命令, 其他的Shell很可能没有这个命令!
很多特有命令的自动补全支持不在bash-completion
内,这时候可以手动添加进去。 比如git、docker等经常使用的命令。
安装bash-completion
之后,一般会生成一个bash_completion.d
的目录, 这个目录下的配置会被bash_completion
加载,所以不用配置,只是,你需要把自己的配置脚本放到这个目录下!
bash_completion.d
这个目录在哪儿呢?可以搜索一下:
sudo find / -name "bash_completion.d"
这样就可以找到了!
cd /usr/local/etc/bash_completion.d
curl -L -O https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
重启bash生效。
cd /usr/local/etc/bash_completion.d
curl -L -O https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose
重启bash生效。