在Mac上启用Docker的Bash Completion

1. 背景

在Ubuntu上使用Docker的时候,使用tab键自动完成docker命令感觉非常方便,例如:只需要输入image或者container ID的前几位就可以使用Tab键补齐整个命令行。但是在Mac上却没有办法实现相同的操作。

经过搜索终于找到了原因:原来是因为没有启用Bash completion功能导致的。而实际上Docker安装包内已经提供了针对Docker的Bash Completion脚本,只需要启用即可。

2. 安装

要启用Docker的Bash Completion功能,需要满足两个条件:

  1. 你用的是Bash这个shell(好像废话了,嘿嘿);
  2. 安装有Bash completion这个功能。

但是Mac上默认是没有安装Bash completion功能的。需要通过Homebrew进行安装。如果之前没有安装过Homebrew,首先参考附录安装。

2.1 安装bash-completion

安装bash-completion。方法如下:

1
brew install bash-completion

2.2 启用bash-completion

然后将/Applications/Docker.app/Contents/Resources/etc目录中的docker-compose.bash-completion,docker.bash-completion两个文件拷贝到/usr/local/etc/bash_completion.d目录中。

最后修改.bash_profile,增加如下内容即可:

1
[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

附录A. 参考资料

附录B. Homebrew使用记录

1
2
3
4
5
6
7
8
9
10
11
12
13
zhang@zhangdeMacBook-Pro:~$ brew info bash-completion
bash-completion: stable 1.3 (bottled)
Programmable completion for Bash 3.2
https://bash-completion.alioth.debian.org/
/usr/local/Cellar/bash-completion/1.3_1 (189 files, 607.8K) *
Poured from bottle on 2017-01-16 at 18:09:59
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/bash-completion.rb
==> Caveats
Add the following lines to your ~/.bash_profile:
[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

Bash completion has been installed to:
/usr/local/etc/bash_completion.d

热评文章