如何在Mac OS X上添加Docker的bash命令完成?

我正在运行docker,我希望docker命令和参数bash命令完成。

如果您已经安装了自制 软件包 ,请将bash_completion.d完成脚本安装到bash_completion.d

 curl -XGET https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker > $(brew --prefix)/etc/bash_completion.d/docker 

注意:如果您没有安装自制bash-completion ,请在执行上述命令之前按照以下说明进行安装。

注意:完成取决于在debian bash-completion中定义的一些函数。 因此,只需完成/ bash / docker中描述的docker完成脚本就可能无法工作。 如果您尝试完成docker run (通过点击TAB),您可能会遇到像__ltrim_colon_completions: command not found的错误。 这意味着,你还没有安装bash完成脚本。

完成脚本附带Docker Beta。 我希望他们保持最新状态。 所以,在OS X上…

  • 安装自制的bash完成
  • 符号链接文件

     find /Applications/Docker.app \ -type f -name "*.bash-completion" \ -exec ln -s "{}" "$(brew --prefix)/etc/bash_completion.d/" \; 

官方的Docker for Mac页面有一个关于安装bash完成的部分:

https://docs.docker.com/docker-for-mac/#/installing-bash-completion

如果你已经安装了自制软件,

 cd /usr/local/etc/bash_completion.d ln -s /Applications/Docker.app/Contents/Resources/etc/docker.bash-completion ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.bash-completion ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.bash-completion 

对我来说,磕磕绊绊的一点是,一旦你安装了bash-competion,你就必须在你的.bash_profile中join几行来加载它,

 if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi 

资料来源: http : //davidalger.com/development/bash-completion-on-os-x-with-brew/

因为我没有find任何一步一步的文档,我已经做了一个快速的脚本安装自制软件,bash完成,最终docker的完成脚本。 https://github.com/HypnoTheNomad/docker-bash-completion-macos-brew

docker的自动完成不仅需要mac,还需要ubuntu / bashterminal。

在Ubuntu中

 curl -ksSL https://raw.githubusercontent.com/docker/docker/$(docker --version | awk 'NR==1{print $NF}')/contrib/completion/bash/docker |sudo tee /etc/bash_completion.d/docker 

完成将在下次login时可用。

由于其在谷歌的最高结果,我在这里添加了答案。

只是要说 :如果你使用brew : brew install docker会做你所需要的一切。 它包括brew link docker ,它将完成安装到`brew --prefix`/etc/bash_completion.d/docker相同的主题,相同的答案为docker-machinedocker-compose ,等等…

其他(也许你正在使用Docker Beta(没有Virtualbox的新的“更原生”的docker安装包),你仍然需要手动添加它,然后按照Michael的回答 ,再看看docker-machine,docker-compose和一些shell-helper在CodeCorrupt的'脚本'中处理