Macos 如何在Mac OS X上为Docker添加bash命令完成?
我正在运行docker,我想要Macos 如何在Mac OS X上为Docker添加bash命令完成?,macos,docker,Macos,Docker,我正在运行docker,我想要bash命令完成docker命令和参数。如果您已经bash完成只需将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 complet
bash
命令完成docker
命令和参数。如果您已经bash完成
只需将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
,请在执行上述行之前安装它
注意:完成取决于中定义的某些函数。因此,如中所述,仅获取docker完成脚本可能不起作用。如果您试图完成
docker run
(通过点击TAB键),您可能会得到一个错误,如\u ltrim\u colon\u completions:command not found
。这可能意味着您尚未安装bash完成脚本 docker的自动完成不仅是mac需要的,也是ubuntu/bash终端需要的
在Ubuntu中
curl -ksSL https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker |sudo tee /etc/bash_completion.d/docker
下一次登录时即可完成
由于它在谷歌的排名第一,我在这里添加了答案。我只想说:
如果您使用:
brew安装docker
我会做你需要的一切。它包括brew链接docker
,它将完成安装到`brew--prefix`/etc/bash_completion.d/docker
相同的主题,相同的答案,适用于docker机器
,docker compose
,等等
否则(可能您正在使用Docker Beta版(不带Virtualbox的新“更原生”Docker安装包)您仍然需要手动添加它,然后跟随plus查看docker machine、docker compose和一些shell helper的其他完成脚本,这些脚本在中处理。完成脚本随docker Beta一起提供。我希望它们保持最新。因此,在OS X上
- 安装自制的bash完成
- 符号链接文件
find /Applications/Docker.app \ -type f -name "*.bash-completion" \ -exec ln -s "{}" "$(brew --prefix)/etc/bash_completion.d/" \;
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
资料来源:
因为我在任何地方都找不到分步文档,所以我制作了一个快速脚本来安装homebrew、bash completion以及docker的最终完成脚本。
Mac的官方Docker页面有一节介绍如何安装bash completion: 如果已安装自制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
在Mac OSX上为ZSH设置自动完成指南 如果您使用的是oh my zsh且自动完成功能不起作用,请按照以下步骤操作: 第1步: 做好以下三个环节:
ln-s/Applications/Docker.app/Contents/Resources/etc/Docker.zsh-completion/usr/local/share/zsh/site functions/\u Docker
ln-s/Applications/Docker.app/Contents/Resources/etc/Docker-compose.zsh-completion/usr/local/share/zsh/site functions/\u Docker-compose
第二步:
将自动加载-Uz compinit;compinit
添加到.zshrc
或运行
echo“autoload-Uz compinit;compinit”>.zshrc
在shell中Docker官方网站有一个用于命令行完成的部分,Mac可以:
帮助我自制:
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\u profile
:
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
重新启动终端。就这样。我已经安装了
bash completion
,并将docker completion脚本放在适当的目录中。但是命令completion仍然不起作用(我没有收到任何错误)。我是否也需要通过自制软件安装bash
?或者它是否可以与Mavericks附带的bash一起使用?很抱歉,docker完成文件是空的,因为curl命令由于证书错误而失败。它正在工作。如果使用-XGET而不是-GET:curl-XGET,curl命令可以工作https://raw.githubusercontent.com/docker/docker/master/contrib/completion/bash/docker>`brew--prefix`/etc/bash_completion.d/docker
我无法让它工作。我使用的是Macbook,我使用标准的.pkg文件而不是brew安装了docker。我缺少什么?请看@Hypno comment,它为我修复了macOS上新的本机docker,这是一篇文章这将是最新的答案。谢谢!如果/当他们将kubectl
的完成添加到列表中时,这将非常方便。@Hypno链接已断开。对于使用MacPorts的用户,您需要sudo-s;port安装bash completion;cd/opt/local/etc/bash_completion.d
,然后从那里开始。您可能需要将登录shell设置为/opt/l>ocal/bin/bash
和chsh
(请参阅manchsh
,或讨论)。如果担心永久更改,Terminal.app和iTerm还允许您设置非默认shell。