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

时间:2014-10-01 00:46:03

标签: macos docker

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

8 个答案:

答案 0 :(得分:55)

如果您已经homebrew bash-completion installed,只需将docker完成脚本安装到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,请在执行上述行之前安装follow these instructions

注意:完成取决于debian bash-completion中定义的某些功能。因此,仅按completion/bash/docker中所述获取docker完成脚本可能不起作用。如果您尝试完成docker run(通过点击TAB),您可能会收到类似__ltrim_colon_completions: command not found的错误消息。这可能意味着您尚未安装bash-completion脚本。

答案 1 :(得分:29)

官方Docker for Mac页面上有一节介绍如何安装bash:

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

如果您安装了Homebrew bash:

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

答案 2 :(得分:15)

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

  • 安装自制软件的bash-completion
  • 符号链接文件

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

答案 3 :(得分:12)

对我而言,绊脚石是,一旦你酿造了bash-competion,你必须在你的.bash_profile中添加几行,以便在启动终端后加载它:

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/

因为我没有找到任何一步一步的文档,我已经制作了一个快速脚本来安装自制程序,bash-completion以及最终的docker完成脚本。 https://github.com/HypnoTheNomad/docker-bash-completion-macos-brew

答案 4 :(得分:5)

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

在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

下次登录时即可完成。

由于谷歌的最高成绩我在这里添加了答案。

答案 5 :(得分:2)

Docker官方站点上有用于命令行完成的部分,对于Mac,该部分包含:

https://docs.docker.com/compose/completion/#mac

通过Homebrew为我提供了帮助:

brew install bash-completion

安装后,Brew显示安装路径。来自文档对我来说是正确的:

/usr/local/etc/bash_completion.d /

运行脚本:

sudo curl -L https://raw.githubusercontent.com/docker/compose/1.25.4/contrib/completion/bash/docker-compose -o /usr/local/etc/bash_completion.d/docker-compose

打开并在文件~/.bash_profile的末尾添加以下内容:

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

重启终端。就这些。

答案 6 :(得分:1)

只是说: 如果您使用brewbrew install docker 将尽你所能。它包含brew link docker,用于将完成安装到`brew --prefix`/etc/bash_completion.d/docker 同一主题,docker-machinedocker-compose等的相同答案......

else(也许你正在使用Docker Beta(新的"更多原生"没有Virtualbox的docker安装包)你仍然需要手动添加它,然后按照Michael's answer加上看看附加docker-machine,docker-compose和一些shell-helper的完成脚本,在'script' from CodeCorrupt

中处理

答案 7 :(得分:-1)

在Mac OSX上为ZSH设置自动完成功能的指南

如果您使用的是 oh-my-zsh ,并且自动填充功能不起作用,请按照以下步骤操作:

第1步:

建立以下三个链接:

ln -s /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker

ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine

ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose

第2步:

任一autoload -Uz compinit; compinit添加到.zshrc

在您的Shell中运行echo "autoload -Uz compinit; compinit" >> .zshrc