Conclusão de bash para comandos no Mac OS X

38

Como obtenho finke macportspreenchei automaticamente os nomes de programas ao digitar comandos, como no Ubuntu apt-get?

Por exemplo, quando eu digito

sudo port install ca

e pressione tab, desejo que o terminal seja preenchido automaticamente ou me mostre os comandos disponíveis.

O OS X nem sequer preenche automaticamente os comandos depois sudo!

Osama Gamal
fonte

Respostas:

69

bash-conclusão adiciona conclusão para:

  • Nomes de comando após sudoewhich
  • Nomes de pacotes Macports e Homebrew (opcional)
  • Nomes de host known_hostspara comandos comossh
  • Pastas ativadas CDPATH

E assim por diante. Você pode imprimir uma lista de comandos de conclusão complete -pe ver a fonte de uma função com declare -f.

Instalando Homebrew ou MacPorts and Bash

Primeiro, você deve instalar o Homebrew ou MacPorts de acordo com as instruções. Nota: Não instale os dois, pois eles conflitam.

Em seguida, instale uma versão mais recente do Bash. O Bash interno no OS X é um pouco antigo e você terá mais opções de conclusão com o Bash> 4.1, que você pode acessar

brew install bash

ou

sudo port install bash

dependendo se você usa o Homebrew ou o MacPorts.

Instalando a conclusão do bash com o Homebrew

Para instalar bash-completion, você precisa:

brew install bash-completion

E adicione o seguinte ao seu ~/.bash_profile:

if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

Atualmente, o Homebrew instala uma versão mais antiga do bash-conclusão (1.3) que ainda funciona com o Bash 3.x, mas ainda assim, é recomendável usar o Bash 4.x.

Instalando o bash-complete com MacPorts

Com o MacPorts:

sudo port install bash-completion

Em seguida, adicione ao seu ~/.bash_profile:

if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
  . /opt/local/etc/profile.d/bash_completion.sh
fi

Consulte trac.macports.org/wiki/howto/bash-completion para obter instruções sobre como habilitar a conclusão para nomes de portas.

slhck
fonte
O bash-completionpacote MacPorts fornece suporte para a conclusão de nomes de pacotes como argumentos adicionais depois port <verb>. Veja aqui , linhas 48-58. Esse comportamento é sugerido no wiki do MacPorts , que declara: " Isso não é apenas para arquivos e diretórios, mas também para os comandos de port. Então você digita port <Tab>e obtém uma lista de todos os comandos possíveis. ", Embora apenas mencione explicitamente conclusão dos verbos (que é muito mais simples).
Daniel Beck
Os nomes dos pacotes são preenchidos automaticamente, o wiki simplesmente não menciona isso. Veja o código do script vinculado.
Daniel Beck
O variants.confnão é para conclusão do próprio MacPorts; variantes.conf define variantes a serem definidas automaticamente para todas as portas, conforme explicado na página wiki que você vinculou. A adição dessa linha faz com que o suporte à conclusão do bash seja ativado quando possível para as portas instaladas.
Kevin Reid
Obrigado pela dica sobre o preenchimento automático no homebrew. Somente isso obteve uma resposta positiva.
Paul Wagland
Excelente, isso permitiu o makepreenchimento automático, exatamente o que eu queria.
Мати Тернер