Il Tab completion, una di quelle funzionalità per le quali vale la pena imparare i comandi, rende l’uso della shell molto più semplice e divertente, velocizzando e aiutando nella scrittura di comandi a volte molto lunghi. Serve, per chi non lo sapesse, a mostrare, (premendo due volte il tasto TAB sulla tastiera), l’elenco dei possibili completamenti di un comando (o di un file, directory e anche di possibili opzioni….prova ad esempio a fare un TAB-TAB dopo apt-get); in realtà, premendo una sola volta il TAB, la shell prova a completare il comando (file, directory, opzione che sia) e, nel caso di unica possibilità lo fa (fai TAB dopo aver scritto la i di install per apt-get), in caso contrario, premendo due volte TAB si ha l’elenco dei possibili completamenti.
La risposta alla domanda iniziale è: usando il compgen, un comando builtin; i comandi builtin sono quei comandi eseguiti direttamente all’interno della shell stessa, a differenza dei comandi esterni che invece la shell carica ed esegue.
Da quanto dice qui è anche possibile personalizzare i completamenti, e cioè controllare cosa succede quando premi TAB dopo un comando.
Compgen, tramite una lista di opzioni, mostra comandi, funzioni, directory e alias dell’utente corrente. In breve compgen è un comando che mostra comandi.
Esempi e opzioni
Ecco l’elenco di esempi d’uso con le opzioni più importanti:
- compgen -c ss
- visualizza l’elenco dei comandi che iniziano con ss (per intenderci, mi dice quello che si ottiene facendo ss seguito da TAB-TAB)
- compgen -f
- mostra tutti i file e le directory nel percorso corrente (o specificare un percorso come nella directory)
- compgen -d /etc/s
- visualizza l’elenco delle directory che iniziano per s della directory etc (o di quella corrente se non metto nulla)
- compgen -b
- mostra tutti i comandi built-in della bash.
- compgen -a
- mostra tutti gli alias disponibili per l’utente corrente
- compgen -k
- mostra tutte le keywords bash
- compgen -u s
- Mostra tutti gli username definiti nel server (che iniziano per s)
- compgen -g p
- Mostra tutti i gruppi definiti nel server (che iniziano per p)
- compgen -A function
- mostra le funzioni della bash
- compgen -A user
- mostra gli utenti del sistema
- compgen -A service
- mostra i servizi presenti
- compgen -A signal SIGK
- mostra i segnali che iniziano per SIGK (esempio SIGKILL)
Articolo ispirato da Linuxaria e integrato con quanto presente qui dove troviamo anche la spiegazione di come sia possibile personalizzare il TAB completion tramite l’uso del comando shopt.