In che modo gli strumenti da riga di comando hanno il proprio elenco di completamento automatico?


24

Come fa Bash in Ubuntu a conoscere l'elenco specifico delle azioni di uno strumento?

Ad esempio, se digito apt-get e tab due volte vedo solo rimuovere, aggiornare, aggiornare ... ecc., Ma non le azioni per un altro comando o i file nella directory corrente.

Sto sviluppando uno strumento da riga di comando in Go e vorrei fornire questa funzione per le distro che lo supportano.


1
Ho rimosso "Ubuntu" dal titolo e dai tag poiché è meglio come domanda più generale (la risposta non è specifica per nessuna distro).
Riccioli d'oro,

1
Ottima domanda, mi sono spesso chiesto questo, ma non ho mai avuto il tempo di cercarlo.
Akatakritos

Risposte:


25

Lo fa usando le funzionalità di completamento di bash v4. Il codice di completamento per apt-getè fornito dal bash-completionpacchetto e si trova in /usr/share/bash-completion/completions/apt-get. Le applicazioni che hanno il completamento e che non fanno parte del bash-completionpacchetto base inseriscono i loro script di completamento /etc/bash_completion.d.

I completamenti vengono caricati tramite sourcing /etc/bash_completion. Il punto esatto in cui verrà fatto varierà a seconda delle versioni di Debian o Ubuntu. Che a sua volta genererà tutto in /usr/share/bash-completion/completionse /etc/bash_completion.d.


Grazie, questo lo spiega. Quindi l'implementazione non varia solo da Debian a Ubuntu, ma anche in ciascuna versione della stessa distribuzione?
Modificato Rustom l'

1
@Amgad Funziona allo stesso modo su tutte le distribuzioni. Le uniche differenze sono dove si trovano i file e forse alcune impostazioni predefinite.
Gilles 'SO- smetti di essere malvagio' l'
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.