我的docker随笔6:docker命令自动补齐

2024-02-10 02:32

本文主要是介绍我的docker随笔6:docker命令自动补齐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


layout: post
category : docker容器
tags : [docker]

背景

在笔者自己制作并安装的ubuntu16.04系统上(参考笔者网站关于debootstrap的文章),无法使用docker自动补齐功能,即输入docker命令后,按Tab键无法列出子命令(或参数)的候选项。于是在网上找了些资料,实现了这个功能,形成本文。

机制

Linux系统许多命令都会提供该命令自身的命令补齐脚本,在安装命令时会自动安装自动补齐脚本——如果有的话。该机制在Linux中被称为bash-complete。在/usr/share/bash-completion/completions目录下有许多命令自动补齐的脚本,可自行查阅。与docker有关的,有2个:docker和docker-compose。如下:

# ls  /usr/share/bash-completion/completions/docker*
/usr/share/bash-completion/completions/docker  /usr/share/bash-completion/completions/docker-compose

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

sudo apt-get install -y bash-completion

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

实践

让配置脚本生效的方法是执行source xxx命令,先执行source /usr/share/bash-completion/completions/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,于是想到执行

source /usr/share/bash-completion/bash_completion

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

$ docker 
attach     cp         export     import     login      pause      push       run        stack      system     version
build      create     help       info       logout     plugin     rename     save       start      tag        volume
commit     diff       history    inspect    logs       port       restart    search     stats      top        wait
config     events     image      kill       network    ps         rm         secret     stop       unpause    
container  exec       images     load       node       pull       rmi        service    swarm      update 

试试docker-compose命令,如下:

# docker-compose  (注:此处按2次Tab键)
build    config   down     exec     kill     pause    ps       push     rm       scale    stop     up       
bundle   create   events   help     logs     port     pull     restart  run      start    unpause  version 

尝试容器名称的自动补齐功能:

# docker logs latelee- (注:输入latelee-后按2次Tab键)
latelee-wordpress    latelee-apache     latelee-mysql        
latelee-zentao  latelee-gitlab  latelee-jenkins 

至此,docker、docker-compose自动补齐功能已完成,重启系统后,也能进行自动补齐。类似地,对于k8s,也有相应的命令补齐功能,不过k8s是另外的话题了。

小结

Linux的大量命令让人望而生畏,但如果掌握了Tab键功能,则可减少大量命令输入工作,提高效率。

李迟 2017.7.19 中午

这篇关于我的docker随笔6:docker命令自动补齐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695927

相关文章

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文