TL, DR: adicione . /etc/bash_completion
ao seu .bashrc
.
Para responder à pergunta exata que você fez, não há comandos internos. Bash tem comandos para completar vários tipos de objetos (nomes de arquivos, usuário nomes, nomes de variáveis, etc.), mas não um que esteja restrito a diretórios.
No entanto, a menos que você esteja executando uma versão antiga do bash, você pode usar conclusão sensível ao contexto , um recurso adicionado na versão 2.04 que foi lançado em 2000. Algumas distribuições o habilitam por padrão; para outros, você precisa instalar o pacote bash-completion
e ativá-lo no seu ~/.bashrc
. A maioria das distribuições fornece um pacote chamado bash-completion
e coloca o script de ativação em /etc/bash_completion
, ou seja, seu .bashrc
deve conter a linha
. /etc/bash_completion
Depois disso, se você digitar cd
e pressionar Tab , apenas os nomes dos diretórios serão preenchidos.
Se você tem uma versão não antiga do bash (≥4.0), você pode colocar shopt -s autocd
no seu .bashrc
, e depois disso você pode omitir o comando cd
, então você pode escrever apenas bar
em vez de cd bar
. A conclusão da tabulação completará os dois nomes de comandos de $PATH
e os nomes de diretórios do diretório atual (e $CDPATH
) na primeira palavra da linha.
O Bash 4.0 também permite que você escreva suas próprias funções de edição de linha de comando (versões anteriores, mas você teve que pular através de aros). Então, se você realmente quiser, pode fazer isso. Como personalizar a conclusão do comando Bash? tem um relativamente exemplo complexo; pesquise READLINE_LINE
e complete
para encontrar outros exemplos.