当前位置: 首页 > 科技观察

Linux命令自动补全工具,git、Docker、k8s等命令自动补全

时间:2023-03-17 15:10:22 科技观察

什么是命令自动补全在Linux命令行中,输入字符后按Tab键,Shell会列出命令以这些字符开头的所有可用命令,如果只有一个命令匹配,按一次Tab键将自动完成该命令。如果输入pass,此时按Tab键,因为pass开头的命令只有passwd命令,shell会自动补全passwd命令。此外,如果输入的字符匹配多个命令,则会列出所有可用的命令。例如,如果您输入do,按下Tab键,shell将自动列出可用的命令。[root@node2~]#dododocker-containerd-shimdockerddonedockerdocker-containerd-shim-currentdockerd-currentdocker-containerddocker-ctr-currentdocker-storage-setupdocker-containerd-currentdocker-currentdomainname但是系统自带的命令补全功能有限,自动完成功能仅限于命令和文件名。您可以安装Bash命令补全增强包bash-completion来实现更多的命令补全。bash-completion的安装以Centos为例[root@node1~]#cat/etc/redhat-releaseCentOSLinuxrelease7.7.1908(Core)直接通过yum命令安装yuminstallbash-completionbash-completion版本信息[root@node1completions]#rpm-qibash-completionName:bash-completionEpoch:1Version:2.1Release:6.el7Architecture:noarchInstallDate:Thu19Mar202007:59:19AMCSTGroup:UnspecifiedSize:264934License:GPLv2+Signature:RSA/SHA256,Fri04Jul201408:47:01AMCST,KeyID24c6a8a7f4a80eb5SourceRPM:bash-completion-2.1-6.el7.src.rpmBuildDate:Tue10Jun201408:05:27AMCSTBuildHost:worker1.bsys.centos.orgRelocations:(notrelocatable)Packager:CentOSBuildSystemVendor:CentOSURL:http://bash-完成。alioth.debian.org/Summary:ProgrammablecompletionforBash描述:bash-completion是shell函数的集合,它们利用了bash的可编程完成特性。配置命令补全source/usr/share/bash-completion/bash_completion命令补全脚本存放在/usr/share/bash-completion/completions/目录下,可以在该目录下看到支持增强补全的命令。再试试输入docker命令后按tab键:[root@node1completions]#dockerbuilddiffhistoryinspectlogsportrestartsearchstatstopwaitcommiteventsimagekillnetworkpsrmsecretstopunpausecontainerexecimagesloadnodepullrmiserviceswarmupdatecpexportimportloginpausepushrunstacksystemversioncreatehelpinfologoutpluginrenamesavestarttagvolume[root@node1completions]#docker可以看到后续可用命令的提示,妈妈再也不用担心我记不住命令了。同样对于kubenetes也可以实现命令的自动补全和提示:[root@node1~]#kubectlannotatecertificatecordondraingetport-forwardrununcordonapi-versionscluster-infocpeditlabelproxyscaleversionapplycompletioncreateexeclogsreplacesetattachconfigdeleteexplainoptionsrolling-updatetaintautoscaleconvertdescribeexposepatchrollouttop[root@node1~]#kubectlgit的命令补全如果是在安装bash-completion之后Theinstallationofgitcannotautomaticallycompletethecommand,andsomemanualconfigurationisrequired.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后,重新源bash-completionsource/usr/share/bash-completion/bash_completion看看配置之后的效??果[root@node3~]#gitaddcherrydifftoolinitreflogshowamcherry-pickfetchlogrelinkshow-branchannotatecleanfilter-branchmergeremotestageapplycloneformat-patchmergetoolrepackstasharchivecolumnfsckmvreplacestatusbisectcommitgcname-revrequest-pullsubmoduleblameconfigget-tar-commit-idnotesresetsubtreebranchcredentialgreppullreverttagbundledescribehelppushrmwhatchangedcheckoutdiffimap-sendrebaseshortlog[root@node3~]#git