用Linux自动补全怎么补全命令?
秩名发表于 -03-25 18:02次浏览
用Linux自动补全怎么补全命令?git、Docker等命令要补全时该怎么进行?Linux自动补全可以帮助你解决这个问题,下面我们一起学习一下,怎么用Linux自动补全怎么补全命令?
什么是命令自动补全
在 Linux 命令行中,当输入字符后,按Tab 键,Shell 就会列出以这些字符开头的所有可用命令,如果只有一个命令匹配到,按一次 Tab 键就自动将这个命令补全。
如果输入pass,此时按 Tab 键,因为以pass开头的命令只有passwd这个命令, Shell 就会自动补全 passwd 命令。
另外如果输入的字符匹配多个命令则会列出所有可用的命令,比如,如果输入do,此时按 Tab 键 Shell 就会自列出可用的命令。
[root@node2~]#do
dodocker-containerd-shimdockerddone
dockerdocker-containerd-shim-currentdockerd-current
docker-containerddocker-ctr-currentdocker-storage-setup
docker-containerd-currentdocker-currentdomainname
但是系统自带的命令补全功能有限,自动补全功能仅限于命令和文件名。
可以安装 Bash 命令补全增强软件包 bash-completion来实现更多命令的补全。
bash-completion的安装
以Centos为例
[root@node1~]#cat/etc/redhat-release
CentOSLinuxrelease7.7.1908(Core)
直接通过yum命令安装
yuminstallbash-completion
bash-completion版本信息
[root@node1completions]#rpm-qibash-completion
Name:bash-completion
Epoch:1
Version:2.1
Release:6.el7
Architecture:noarch
InstallDate:Thu19Mar20:59:19AMCST
Group:Unspecified
Size:264934
License:GPLv2+
Signature:RSA/SHA256,Fri04Jul08:47:01AMCST,KeyID24c6a8a7f4a80eb5
SourceRPM:bash-completion-2.1-6.el7.src.rpm
BuildDate:Tue10Jun08:05:27AMCST
BuildHost:worker1.
Relocations:(notrelocatable)
Packager:CentOSBuildSystem
Vendor:CentOS
URL:http://bash-completion./
Summary:ProgrammablecompletionforBash
Description:
bash-completionisacollectionofshellfunctionsthattakeadvantage
oftheprogrammablecompletionfeatureofbash.
配置命令补全
source/usr/share/bash-completion/bash_completion
命令补全的脚本存放在/usr/share/bash-completion/completions/目录,可以在这个目录查看支持增强补全功能的命令。
再试试输入docker命令后按tab键:
[root@node1completions]#docker
builddiffhistoryinspectlogsportrestartsearchstatstopwait
commiteventsimagekillnetworkpsrmsecretstopunpause
containerexecimagesloadnodepullrmiserviceswarmupdate
cpexportimportloginpausepushrunstacksystemversion
createhelpinfologoutpluginrenamesavestarttagvolume
[root@node1completions]#docker
可以看到后续可用命令的提示,妈妈再也不用担心我记不住命令了。
同样对于kubenetes也可以实现命令的自动补全和提示:
[root@node1~]#kubectl
annotatecertificatecordondraingetport-forwardrununcordon
api-versionscluster-infocpeditlabelproxyscaleversion
applycompletioncreateexeclogsreplaceset
attachconfigdeleteexplainoptionsrolling-updatetaint
autoscaleconvertdescribeexposepatchrollouttop
[root@node1~]#kubectl
git的命令补全
如果是在安装bash-completion之后安装git是不能自动命令补全,需要手动进行一些配置。
git安装之后文档里会有git-completion.bash文件
[root@node1bash-completion]#find/-namegit-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@node1bash-completion]#
安装完git之后重新source一下bash-completion
source/usr/share/bash-completion/bash_completion
看看配置之后的效果
[root@node3~]#git
addcherrydifftoolinitreflogshow
amcherry-pickfetchlogrelinkshow-branch
annotatecleanfilter-branchmergeremotestage
applycloneformat-patchmergetoolrepackstash
archivecolumnfsckmvreplacestatus
bisectcommitgcname-revrequest-pullsubmodule
blameconfigget-tar-commit-idnotesresetsubtree
branchcredentialgreppullreverttag
bundledescribehelppushrmwhatchanged
checkoutdiffimap-sendrebaseshortlog
[root@node3~]#git