Ispirato da un post di Concepcion Claudio Certad, oggi ho dato uno sguardo ad un comando che non conoscevo: compgen.
Il comando incluso nella bash compgensi espande una lista di argomenti per generare una lista di completamento partendo da una stringa, quindi ci permette di visualizzare i comandi, le funzioni, le directory e gli alias disponibili per l’utente corrente. In breve compgen è un comando che visualizza i comandi.
Quindi compgen è un comando incorporato nella shell bash, quindi se si utilizza questa shell avete a disposizione questo comando nel terminale,
Vediamo come possiamo utilizzarlo direttamente dalla riga di comando, come prima cosa diciamo che in generale compgen ha diverse opzioni che è possibile utilizzare per specificare quale tipo di cosa si sta cercando, quindi l’uso base è
compgen [opzione] [parola]
Questo genera una lista di corrispondenze di completamento possibili per la parola in base alle opzioni, che possono essere qualsiasi opzione accettata dal comando complete
builtin con l’eccezione di -p e -r, e stampa i risultati sullo standard output, vediamo alcuni esempi:
Lavorare con le directory
L’opzione da utilizzare è -d quindi compgen -d
darà come output l’elenco di tutte le directory nel percorso corrente, oppure è possibile richiedere un percorso specifico, come ad esempio:
xubuntu-home:~$ compgen -d /etc/s /etc/sudoers.d /etc/sysctl.d /etc/sensors.d /etc/skel /etc/samba /etc/sane.d /etc/ssh /etc/speech-dispatcher /etc/systemd /etc/sgml /etc/ssl /etc/sound /etc/smartmontools /etc/snmp /etc/security |
In questo caso ho chiesto a compgen di mostrare tutte le directory in /etc/ che iniziano con la lettera s, usando solo /etc/ come parametro, mostrerà tutte le directory in /etc/.
Lavorare con i comandi
Nel stesso modo compgen può anche mostrare tutti i comandi disponibili per un utente con il flag -c: compgen -c
se si esegue questo comando probabilmente si otterrà un elenco di alcune migliaia di comandi quindi è meglio usarlo con un | less
o per mostrare solo alcuni comandi utilizzare un parametro aggiuntivo che rappresenta una parte delal parola che si sta cercando:
xubuntu-home:~$ compgen -c ss sshd ssgrep ssh-vulnkey ssindex ssconvert ssh-import-id ssh ssh-copy-id ssh-argv0 ssh-keygen ssh-askpass ssh-add ssh-keyscan ssh-agent ss |
In questo esempio posso vedere tutti i comandi che posso utilizzare che iniziano con ss
Altre funzioni
Questa è una breve lista di opzioni che è possibile utilizzare con compgen:
Mostra tutti i comandi built-in per la bash.
compgen -b
Mostra tutti i file e le directory nel percorso corrente (o specificare un percorso come nella directory)
compgen -f
Mostra tutte le keywords bash
xubuntu-home:~# compgen -k if then else elif fi case esac for select while until do done in function time { } ! [[ ]] coproc |
Mostra tutte le funzioni bash
compgen -A function
Mostra tutti gli alias disponibili per l’utente corrente:
xubuntu-home:~$ compgen -a vps egrep fgrep grep ls |
Mostra tutti gli username definiti nel server
xubuntu-home:~# compgen -u s sys sync syslog speech-dispatcher saned sshd sslh |
Mostra tutti i gruppi definiti nel server
xubuntu-home:~# compgen -g p proxy plugdev pulse pulse-access postfix postdrop |
Popular Posts:
- None Found