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

Mic*_*arf 41 macos docker

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

Mic*_*arf 60

如果您已经安装自制 bash-completion 程序,只需将docker完成脚本安装到bash_completion.d

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

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

注意:完成取决于debian bash-completion中定义的一些函数.因此,只需按照completion/bash/docker中的描述获取docker完成脚本即可.如果您尝试完成docker run(通过点击TAB),您可能会收到类似的错误__ltrim_colon_completions: command not found.这可能意味着您尚未安装bash-completion脚本.

  • 如果使用-XGET而不是-GET,则curl命令有效:**`curl -XGET https://raw.githubusercontent.com/docker/docker/master/contrib/completion/bash/docker> \`brew --prefix \`/etc/bash_completion.d/docker`** (2认同)
  • 我无法让它发挥作用.我使用的是Macbook,我使用标准的.pkg文件而不是brew来安装Docker.我错过了什么? (2认同)

Roy*_*son 36

官方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
Run Code Online (Sandbox Code Playgroud)


Har*_*vey 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/" \;
    
    Run Code Online (Sandbox Code Playgroud)

  • 随着macOS上新的原生Docker的出现,这应该是新的最佳答案.谢谢! (3认同)

小智 13

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

if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
Run Code Online (Sandbox Code Playgroud)

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

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


aru*_*net 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
Run Code Online (Sandbox Code Playgroud)

完成将在下次登录时提供.

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


Anu*_*nuj 5

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

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

步骤1:

建立以下三个链接:

在 Apple Silicon Mac 上,目标符号链接应位于 /opt/homebrew 中,即将上述路径中的 /usr/local 替换为 /opt/homebrew

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-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose

第2步:

要么添加autoload -Uz compinit; compinit.zshrc

或者echo "autoload -Uz compinit; compinit" >> .zshrc在你的 shell 中运行

步骤3:

将更改应用到您的终端:

source .zshrc