什么是命令自動(dòng)補(bǔ)全
在 Linux 命令行中薪鹦,當(dāng)輸入字符后,按Tab 鍵惯豆,Shell 就會(huì)列出以這些字符開頭的所有可用命令池磁,如果只有一個(gè)命令匹配到,按一次 Tab 鍵就自動(dòng)將這個(gè)命令補(bǔ)全楷兽。
如果輸入pass地熄,此時(shí)按 Tab 鍵,因?yàn)橐詐ass開頭的命令只有passwd這個(gè)命令芯杀, Shell 就會(huì)自動(dòng)補(bǔ)全 passwd 命令端考。
另外如果輸入的字符匹配多個(gè)命令則會(huì)列出所有可用的命令,比如揭厚,如果輸入do却特,此時(shí)按 Tab 鍵 Shell 就會(huì)自列出可用的命令。
[root@node2 ~]# do
do docker-containerd-shim dockerd done
docker docker-containerd-shim-current dockerd-current
docker-containerd docker-ctr-current docker-storage-setup
docker-containerd-current docker-current domainname
但是系統(tǒng)自帶的命令補(bǔ)全功能有限筛圆,自動(dòng)補(bǔ)全功能僅限于命令和文件名裂明。
可以安裝 Bash 命令補(bǔ)全增強(qiáng)軟件包 bash-completion來實(shí)現(xiàn)更多命令的補(bǔ)全。
bash-completion的安裝
以Centos為例
[root@node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
直接通過yum命令安裝
yum install bash-completion
bash-completion版本信息
[root@node1 completions]# rpm -qi bash-completion
Name : bash-completion
Epoch : 1
Version : 2.1
Release : 6.el7
Architecture: noarch
Install Date: Thu 19 Mar 2020 07:59:19 AM CST
Group : Unspecified
Size : 264934
License : GPLv2+
Signature : RSA/SHA256, Fri 04 Jul 2014 08:47:01 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : bash-completion-2.1-6.el7.src.rpm
Build Date : Tue 10 Jun 2014 08:05:27 AM CST
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://bash-completion.alioth.debian.org/
Summary : Programmable completion for Bash
Description :
bash-completion is a collection of shell functions that take advantage
of the programmable completion feature of bash.
配置命令補(bǔ)全
source /usr/share/bash-completion/bash_completion
命令補(bǔ)全的腳本存放在/usr/share/bash-completion/completions/目錄太援,可以在這個(gè)目錄查看支持增強(qiáng)補(bǔ)全功能的命令闽晦。
再試試輸入docker命令后按tab鍵:
[root@node1 completions]# docker
build diff history inspect logs port restart search stats top wait
commit events image kill network ps rm secret stop unpause
container exec images load node pull rmi service swarm update
cp export import login pause push run stack system version
create help info logout plugin rename save start tag volume
[root@node1 completions]# docker
可以看到后續(xù)可用命令的提示扳碍,媽媽再也不用擔(dān)心我記不住命令了。
同樣對于kubenetes也可以實(shí)現(xiàn)命令的自動(dòng)補(bǔ)全和提示:
[root@node1 ~]# kubectl
annotate certificate cordon drain get port-forward run uncordon
api-versions cluster-info cp edit label proxy scale version
apply completion create exec logs replace set
attach config delete explain options rolling-update taint
autoscale convert describe expose patch rollout top
[root@node1 ~]# kubectl
git的命令補(bǔ)全
如果是在安裝bash-completion之后安裝git是不能自動(dòng)命令補(bǔ)全仙蛉,需要手動(dòng)進(jìn)行一些配置笋敞。
git安裝之后文檔里會(huì)有g(shù)it-completion.bash文件
[root@node1 bash-completion]# find / -name git-completion*
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.bash
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.tcsh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.zsh
/usr/share/bash-completion/completions/git-completion.bash
/usr/share/git-core/contrib/completion/git-completion.tcsh
[root@node1 bash-completion]#
安裝完git之后重新source一下bash-completion
source /usr/share/bash-completion/bash_completion
看看配置之后的效果
[root@node3 ~]# git
add cherry difftool init reflog show
am cherry-pick fetch log relink show-branch
annotate clean filter-branch merge remote stage
apply clone format-patch mergetool repack stash
archive column fsck mv replace status
bisect commit gc name-rev request-pull submodule
blame config get-tar-commit-id notes reset subtree
branch credential grep pull revert tag
bundle describe help push rm whatchanged
checkout diff imap-send rebase shortlog
[root@node3 ~]# git
如果覺得有用記得收藏點(diǎn)贊