Completamento di Bash per comandi in Mac OS X


38

Come ottenere finke macportscompletare automaticamente i nomi dei programmi quando si digitano i comandi, come in Ubuntu apt-get?

Ad esempio quando scrivo

sudo port install ca

e premo tab, voglio che il terminale si completi automaticamente o mi mostri i comandi disponibili.

OS X non esegue nemmeno il completamento automatico dei comandi dopo sudo!

Risposte:


69

bash-completamento aggiunge il completamento per:

  • Nomi dei comandi dopo sudoewhich
  • Nomi dei pacchetti Macports e Homebrew (facoltativo)
  • Nomi host known_hostsper comandi similissh
  • Cartelle attive CDPATH

E così via. È possibile stampare un elenco di comandi di completamento con complete -pe vedere l'origine di una funzione con declare -f.

Installazione di Homebrew o MacPorts e Bash

Innanzitutto, devi installare Homebrew o MacPorts secondo le istruzioni. Nota: non installare entrambi, poiché sono in conflitto.

Quindi, installa una versione più recente di Bash. Il Bash integrato in OS X è un po 'vecchio e avrai più opzioni di completamento con Bash> 4.1, che puoi superare

brew install bash

o

sudo port install bash

a seconda che utilizzi Homebrew o MacPorts.

Installazione di bash-completamento con Homebrew

Per installare bash-completion, devi:

brew install bash-completion

E aggiungi quanto segue al tuo ~/.bash_profile:

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

Homebrew attualmente installa una versione precedente di bash-completamento (1.3) che funziona ancora con Bash 3.x, ma si consiglia comunque di usare Bash 4.x.

Installazione di bash-completamento con MacPorts

Con MacPorts:

sudo port install bash-completion

Quindi, aggiungi a ~/.bash_profile:

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

Vedi trac.macports.org/wiki/howto/bash-completion per istruzioni su come abilitare il completamento per i nomi delle porte.


Il bash-completionpacchetto di MacPorts fornisce supporto per il completamento dei nomi dei pacchetti come argomenti aggiuntivi dopo port <verb>. Vedi qui , linee 48-58. Questo comportamento è accennato nel wiki di MacPorts , in cui si afferma: " Questo non è solo per file e directory, ma anche per i comandi di port. Quindi si digita port <Tab>e si ottiene un elenco di tutti i possibili comandi. ", Anche se menziona solo esplicitamente completamento dei verbi (che è molto più semplice).
Daniel Beck

I nomi dei pacchetti vengono completati automaticamente, il wiki non ne parla. Vedi il codice dello script collegato.
Daniel Beck

Non variants.confè per il completamento per MacPorts stesso; varianti.conf definisce le varianti da impostare automaticamente per tutte le porte, come spiegato nella pagina wiki collegata. L'aggiunta di quella linea comporta l'attivazione del supporto per il completamento della bash quando possibile per le porte installate.
Kevin Reid,

Grazie per il suggerimento sul completamento automatico in homebrew. Solo questo ha guadagnato questa risposta un voto positivo.
Paul Wagland,

Eccellente, questo abilita il makecompletamento automatico, proprio quello che volevo.
Мати Тернер,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.