Jul 232012
 

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:

Flattr this!

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*