编程语言Linux命令自动补全工具

    作者:IT男刘加加更新于: 2020-03-30 20:44:47

    大神带你学编程,欢迎选课

    Linux命令自动补全工具,自动补全git、Docker、k8s等命令。编程语言是人类控制电脑的手段,所以绝大多数编程语言都试图使这个过程更加强大和简单。也正因此这个领域诞生了数百种编程语言,不过其中许多编程语言目前已经不再使用,还有一些可能在未来几年里会过时,然而还有很多语言将不断发展,在目前以及未来都占有重要的位置。

    在 Linux 命令行中,当输入字符后,按Tab 键,Shell 就会列出以这些字符开头的所有可用命令,如果只有一个命令匹配到,按一次 Tab 键就自动将这个命令补全

    编程语言Linux命令自动补全工具_编程语言_Linux_Docker_课课家

    什么是命令自动补全

    在 Linux 命令行中,当输入字符后,按Tab 键,Shell 就会列出以这些字符开头的所有可用命令,如果只有一个命令匹配到,按一次 Tab 键就自动将这个命令补全。

    如果输入pass,此时按 Tab 键,因为以pass开头的命令只有passwd这个命令, Shell 就会自动补全 passwd 命令。

    另外如果输入的字符匹配多个命令则会列出所有可用的命令,比如,如果输入do,此时按 Tab 键 Shell 就会自列出可用的命令。

    1. [root@node2 ~]# do 
    2.  
    3. do docker-containerd-shim dockerd done 
    4.  
    5. docker docker-containerd-shim-current dockerd-current 
    6.  
    7. docker-containerd docker-ctr-current docker-storage-setup 
    8.  
    9. docker-containerd-current docker-current domainname 

    但是系统自带的命令补全功能有限,自动补全功能仅限于命令和文件名。

    可以安装 Bash 命令补全增强软件包 bash-completion来实现更多命令的补全。

    bash-completion的安装

    以Centos为例

    1. [root@node1 ~]# cat /etc/redhat-release 
    2.  
    3. CentOS Linux release 7.7.1908 (Core) 

    直接通过yum命令安装

    1. yum install bash-completion 

    bash-completion版本信息

    1. [root@node1 completions]# rpm -qi bash-completion 
    2.  
    3. Name : bash-completion 
    4.  
    5. Epoch : 1 
    6.  
    7. Version : 2.1 
    8.  
    9. Release : 6.el7 
    10.  
    11. Architecture: noarch 
    12.  
    13. Install Date: Thu 19 Mar 2020 07:59:19 AM CST 
    14.  
    15. Group : Unspecified 
    16.  
    17. Size : 264934 
    18.  
    19. License : GPLv2+ 
    20.  
    21. Signature : RSA/SHA256, Fri 04 Jul 2014 08:47:01 AM CST, Key ID 24c6a8a7f4a80eb5 
    22.  
    23. Source RPM : bash-completion-2.1-6.el7.src.rpm 
    24.  
    25. Build Date : Tue 10 Jun 2014 08:05:27 AM CST 
    26.  
    27. Build Host : worker1.bsys.centos.org 
    28.  
    29. Relocations : (not relocatable) 
    30.  
    31. Packager : CentOS BuildSystem //bugs.centos.org> 
    32.  
    33. Vendor : CentOS 
    34.  
    35. URL : http://bash-completion.alioth.debian.org/ 
    36.  
    37. Summary : Programmable completion for Bash 
    38.  
    39. Description : 
    40.  
    41. bash-completion is a collection of shell functions that take advantage 
    42.  
    43. of the programmable completion feature of bash. 

    配置命令补全

    1. source /usr/share/bash-completion/bash_completion 

    命令补全的脚本存放在/usr/share/bash-completion/completions/目录,可以在这个目录查看支持增强补全功能的命令。

    再试试输入docker命令后按tab键:

    1. [root@node1 completions]# docker 
    2.  
    3. build diff history inspect logs port restart search stats top wait 
    4.  
    5. commit events image kill network PS rm secret stop unpause 
    6.  
    7. container exec images load node pull rmi service swarm update 
    8.  
    9. cp export import login pause push run stack system version 
    10.  
    11. create help info logout plugin rename save start tag volume 
    12.  
    13. [root@node1 completions]# docker 

    可以看到后续可用命令的提示,妈妈再也不用担心我记不住命令了。

    同样对于kubenetes也可以实现命令的自动补全和提示:

    1. [root@node1 ~]# kubectl 
    2.  
    3. annotate certificate cordon drain get port-forward run uncordon 
    4.  
    5. api-versions cluster-info cp edit label proxy scale version 
    6.  
    7. apply completion create exec logs replace set 
    8.  
    9. attach config delete explain options rolling-update taint 
    10.  
    11. autoscale convert describe expose patch rollout top 
    12.  
    13. [root@node1 ~]# kubectl 

    git的命令补全

    如果是在安装bash-completion之后安装git是不能自动命令补全,需要手动进行一些配置。

    git安装之后文档里会有git-completion.bash文件

    1. [root@node1 bash-completion]# find / -name git-completion* 
    2.  
    3. /usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.bash 
    4.  
    5. /usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.tcsh 
    6.  
    7. /usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.zsh 
    8.  
    9. /usr/share/bash-completion/completions/git-completion.bash 
    10.  
    11. /usr/share/git-core/contrib/completion/git-completion.tcsh 
    12.  
    13. [root@node1 bash-completion]# 

    安装完git之后重新source一下bash-completion

    1. source /usr/share/bash-completion/bash_completion 

    看看配置之后的效果

    1. [root@node3 ~]# git 
    2.  
    3. add cherry difftool init reflog show 
    4.  
    5. am cherry-pick fetch log relink show-branch 
    6.  
    7. annotate clean filter-branch merge remote stage 
    8.  
    9. apply clone format-patch mergetool repack stash 
    10.  
    11. archive column fsck mv replace status 
    12.  
    13. bisect commit gc name-rev request-pull submodule 
    14.  
    15. blame config get-tar-commit-id notes reset subtree 
    16.  
    17. branch credential grep pull revert tag 
    18.  
    19. bundle describe help push rm whatchanged 
    20.  
    21. checkout diff imap-send rebase shortlog 
    22.  
    23. [root@node3 ~]# git 
      高级语言的出现使得计算机程序设计语言不再过度地依赖某种特定的机器或环境。这是因为高级语言在不同的平台上会被编译成不同的机器语言,而不是直接被机器执行。最早出现的编程语言之一FORTRAN的一个主要目标,就是实现平台独立。

课课家教育

未登录