Linux命令自動補(bǔ)全工具,自動補(bǔ)全git、Docker、k8s等命令
什么是命令自動補(bǔ)全
在 Linux 命令行中,當(dāng)輸入字符后,按Tab 鍵,Shell 就會列出以這些字符開頭的所有可用命令,如果只有一個命令匹配到,按一次 Tab 鍵就自動將這個命令補(bǔ)全。
如果輸入pass,此時按 Tab 鍵,因?yàn)橐詐ass開頭的命令只有passwd這個命令, Shell 就會自動補(bǔ)全 passwd 命令。
另外如果輸入的字符匹配多個命令則會列出所有可用的命令,比如,如果輸入do,此時按 Tab 鍵 Shell 就會自列出可用的命令。
- [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ǔ)全功能有限,自動補(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/目錄,可以在這個目錄查看支持增強(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)命令的自動補(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是不能自動命令補(bǔ)全,需要手動進(jìn)行一些配置。
git安裝之后文檔里會有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