Docker笔记7:Docker 命令自动补齐

 

      经常大家会碰到这种现象,Docker 已经安装好了,但是使用 docker 命令时 不能自动补齐,即输入 docker 命令后,按 Tab 键无法列出子命令(或参数)的候选项。

 

【机制】

      Linux 系统许多命令都会提供该命令自身的命令补齐脚本,在安装命令时会自动安装自动补齐脚本,如果有的话,该机制在Linux中被称为 bash-complete。

      在 /usr/share/bash-completion/completions/ 目录下有许多命令自动补齐的脚本,可自行查阅。

      与 docker 有关的,有 2 个文件: docker 和 docker-compose。如下:

[root@docker ~]# ls  /usr/share/bash-completion/completions/docker*
/usr/share/bash-completion/completions/docker
/usr/share/bash-completion/completions/docker-compose

      (备注:如果没有安装 docker compose,那么只有一个 docker 自动补齐脚本)

      自动补齐需要依赖工具 bash-complete,如果没有,则需要手动安装,命令如下:

[root@docker ~]# yum -y install bash-completion

      安装成功后,得到文件为  /usr/share/bash-completion/bash_completion  ,如果没有这个文件,则说明系统上没有安装这个工具。

 

 

【实践】

 

       让配置脚本生效的方法是执行 source xxx 命令,先执行 source /usr/share/bash-completion/completions/docker,再输入 docker,然后按2次 Tab键,提示错误如下:

[root@docker ~]# docker  (docker + 空格 + 连续按2次Tab键)
docker bash: _get_comp_words_by_ref: command not found
bash: [: : integer expression expected
bash: [: : integer expression expected
bash: [: : integer expression expected
bash: _get_comp_words_by_ref: command not found
bash: [: : integer expression expected
bash: [: : integer expression expected
bash: [: : integer expression expected

      注:第一行的docker,实际是输入的命令,其它是按Tab键的输出信息。

      前面已经安装了 bash_completion,执行如下命令:

[root@docker ~]# source /usr/share/bash-completion/bash_completion

      再次尝试,发现可以正常列出docker的子命令,示例如下:

[root@docker ~]# docker  (docker + 空格 + 连续按2次Tab键)
attach    container  engine    history   inspect   logs      port     restart   search    stats    top      volume
build     context    events    image     kill      network   ps       rm        secret    stop     trust    wait
builder   cp         exec      images    load      node      pull     rmi       service   swarm    unpause    
commit    create     export    import    login     pause     push     run       stack     system   update     
config    diff       help      info      logout    plugin    rename   save      start     tag      version   

 

      尝试 Docker 容器名称的自动补齐功能,示例如下:

[root@docker ~]# docker logs izheng-  (注:输入izheng-后按2次Tab键)
izheng-wordpress    izheng-apache     izheng-mysql        
izheng-zentao       izheng-gitlab     izheng-jenkins 

 

       若安装了 Docker Compose,则也可事实 docker-compose 命令的自动补齐功能。

       重启系统后,也能进行自动补齐。

 

【小结】

      在 Linux 系统下,掌握了 Tab键 的自动补齐功能,可以减少大量的命令输入工作,提高工作效率。

  

 

posted on 2019-10-31 18:08  morgan363  阅读(5260)  评论(0编辑  收藏  举报

导航