Sistemi Operativi

Linux: elencare tutti i comandi del terminale

Vi siete mai chiesti quanti e quali sono i comandi a disposizione nel terminale? Con i metodi seguenti sarà possibile avere una lista completa di tutte le parole chiave, comandi e programmi accessibili nella console.

Metodo 1:

Premere due volte consecutive il tasto "TAB" nel terminale, quindi rispondete "y" alla domanda che viene visualizzata. Se non dovesse funzionare, come prima cosa inserite uno spazio e poi fate quanto descritto sopra.

$  
Display all 2846 possibilities? (y or n)
!
./
:
[
[[
]]
{
}
2to3-2.7
411toppm
7z
7za
7zr
a2disconf
a2dismod
a2dissite
...
...

Se inserite una lettera o una qualunque combinazione di lettere e poi premete due volte "TAB" nel terminale, vi verrà chiesto se volete visualizzare la lista dei comandi che iniziano con quella specifica lettera/combinazione di lettere.

$ f
Display all 120 possibilities? (y or n)
f2py                file-rename         foo2zjs-pstops
f2py2.7             filterdiff          foo2zjs-wrapper
f2py3               finalrd             foomatic-rip
f2py3.8             fincore             for
factor              find                fprintd-delete
faillock            findfs              fprintd-enroll
faillog             findmnt             fprintd-list
faked-sysv          findrule            fprintd-verify
faked-tcp           firefox             free
fakeroot            fitstopnm           from
fakeroot-sysv       fixcvsdiff          fsadm
fakeroot-tcp        fixparts            fsck
fallocate           flatpak             fsck.btrfs
false               flex                fsck.cramfs
fatlabel            flex++              fsck.exfat
fc                  flipdiff            fsck.ext2
fc-cache            flock               fsck.ext3
fc-cat              fmt                 fsck.ext4
fc-conflist         fold                fsck.fat
fcgistarter         fonttosfnt          fsck.hfs
fc-list             foo2ddst            fsck.hfsplus
fc-match            foo2ddst-wrapper    fsck.jfs
fc-pattern          foo2hbpl2           fsck.minix

Con una combinazione...

$ gp
gparted            gpgcompose         gpgsplit           gpic
gpartedbin         gpgconf            gpgtar             gprof
gpasswd            gpg-connect-agent  gpgv               gpu-manager
gpg                gpgparsemail       gpg-wks-server     
gpg-agent          gpgsm              gpg-zip

Metodo 2:

Usando il comando "compgen -c" si ottiene una lista non ordinata alfabeticamente dei comandi:

$ compgen -c
alert
egrep
fgrep
grep
l
la
ll
ls
if
then
else
elif
fi
case
esac
for
...
...

Consiglio di usare "compgen --help" per conoscere le varie opzioni di utilizzo del comando.

$ compgen --help
compgen: compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]
    Visualizza i possibili completamenti a seconda delle opzioni.
    
    È pensata per essere usata all'interno di una funzione di shell per generare
    dei possibili completamenti.  Se viene fornito l'argomento opzionale PAROLA,
    vengono generate le corrispondenze relative a PAROLA.
    
    Stato di uscita:
    Restituisce successo a meno che non sia fornita una opzione non valida o si riscontri un errore.

Metodo 3:

Script che elenca tutti i comandi corredati di una breve descrizione e li inserisce nel file "lista_comandi.txt" :

for c in $(compgen -ac | sort) ;
do whatis $c | tee -a ~/lista_comandi.txt ;
done

Il precedente codice deve essere scritto con l'ausilio di un editor di testo, ad esempio nano. Dopo avere salvato il file (io l'ho chiamato "Lista") bisogna renderlo eseguibile in questo modo:

$ chmod u+x Lista

e poi lo si può avviare:

$ ./Lista

Lasciatelo lavorare fina alla fine e vi ritroverete il file "lista_comandi.txt" pronto per essere consultato con un normale editor di testo.

Questo script non è opera mia, ma di un utente, "Tony" del forum di Linux Mind Italia. Questa la discussione) in cui viene consigliato lo script.