# Autocompletado (Completion)


Puedes generar un script de autocompletado de shell para la CLI de Docker utilizando el comando `docker completion`. El script de autocompletado te proporciona completado de palabras para comandos, banderas y objetos de Docker (como nombres de contenedores y volúmenes) al pulsar `<Tab>` mientras escribes en tu terminal.

Puedes generar scripts de autocompletado para los siguientes shells:

- [Bash](#bash)
- [Zsh](#zsh)
- [Fish](#fish)

## Bash

Para obtener el autocompletado de la CLI de Docker con Bash, primero debes instalar el paquete `bash-completion`, que contiene una serie de funciones de Bash para el autocompletado de la shell.

```bash
# Instalar usando APT:
sudo apt install bash-completion

# Instalar usando Homebrew (Bash versión 4 o posterior):
brew install bash-completion@2
# Instalación de Homebrew para versiones anteriores de Bash:
brew install bash-completion

# Con pacman:
sudo pacman -S bash-completion
```

Después de instalar `bash-completion`, carga (source) el script en tu archivo de configuración de shell (en este ejemplo, `.bashrc`):

```bash
# En Linux:
cat <<EOT >> ~/.bashrc
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
EOT

# En macOS / con Homebrew:
cat <<EOT >> ~/.bash_profile
[[ -r "$(brew --prefix)/etc/profile.d/bash_completion.sh" ]] && . "$(brew --prefix)/etc/profile.d/bash_completion.sh"
EOT
```

Y recarga la configuración de tu shell:

```console
$ source ~/.bashrc
```

Ahora puedes generar el script de autocompletado de Bash utilizando el comando `docker completion`:

```console
$ mkdir -p ~/.local/share/bash-completion/completions
$ docker completion bash > ~/.local/share/bash-completion/completions/docker
```

## Zsh

El [sistema de autocompletado](http://zsh.sourceforge.net/Doc/Release/Completion-System.html) de Zsh se encarga de todo siempre que se pueda acceder al script a través de `FPATH`.

Si utilizas Oh My Zsh, puedes instalar los autocompletados sin modificar tu archivo `~/.zshrc` guardando el script de autocompletado en el directorio `~/.oh-my-zsh/completions`.

```console
$ mkdir -p ~/.oh-my-zsh/completions
$ docker completion zsh > ~/.oh-my-zsh/completions/_docker
```

Si no utilizas Oh My Zsh, guarda el script de autocompletado en el directorio de tu elección y añade el directorio a la variable `FPATH` en tu `.zshrc`.

```console
$ mkdir -p ~/.docker/completions
$ docker completion zsh > ~/.docker/completions/_docker
```

```console
$ cat <<"EOT" >> ~/.zshrc
FPATH="$HOME/.docker/completions:$FPATH"
autoload -Uz compinit
compinit
EOT
```

## Fish

El shell fish admite un [sistema de autocompletado](https://fishshell.com/docs/current/#tab-completion) de forma nativa.
Para activar el autocompletado en comandos de Docker, copia o crea un enlace simbólico del script de autocompletado en el directorio `completions/` de tu shell fish:

```console
$ mkdir -p ~/.config/fish/completions
$ docker completion fish > ~/.config/fish/completions/docker.fish
```

