Le pagine man sono una delle risorse più utili quando si tratta di comprendere le utilità della riga di comando. Una pagina man, tuttavia, contiene molti dettagli sul comando. Potrebbero esserci momenti in cui vorresti sapere rapidamente - potrebbe essere in una piccola riga o giù di lì - cosa fa uno strumento da riga di comando. Bene, sarai felice di sapere che esiste un comando creato appositamente per questo scopo.
In questo tutorial, discuteremo le basi di whatis comando utilizzando alcuni esempi di facile comprensione. Ma prima di farlo, vale la pena ricordare che tutti gli esempi qui presenti sono stati testati su una macchina Ubuntu 18.04 LTS e Debian 10.
Il comando whatis di Linux
Il comando whatis in Linux ti consente di visualizzare le descrizioni delle pagine di manuale di una riga. Di seguito è riportata la sua sintassi:
whatis [-dlv?V] [-r|-w] [-s list] [-m system[,...]] [-M path] [-L
locale] [-C file] name ...
Ed ecco come lo spiega la pagina man dello strumento:
Each manual page has a short description available within it. whatis
searches the manual page names and displays the manual page descrip?
tions of any name matched.
name may contain wildcards (-w) or be a regular expression (-r). Using
these options, it may be necessary to quote the name or escape (\) the
special characters to stop the shell from interpreting them.
Di seguito sono riportati alcuni esempi in stile Domande e risposte che dovrebbero darti un'idea migliore di come funziona il comando whatis.
Q1. Come utilizzare il comando whatis?
L'utilizzo di base è piuttosto semplice. Basta passare il nome di uno strumento come input e whatis cercherà e visualizzerà una descrizione di una riga per esso.
Ecco un esempio:
whatis ls
Il seguente output è stato prodotto dal suddetto comando:
ls (1) - list directory contents
Q2. Come ottenere informazioni per più comandi?
Anche questo è abbastanza semplice:basta passare i nomi degli strumenti come input a whatis. Segue un esempio:
whatis ls cp rm mv
Ed ecco l'output prodotto da questo comando:
ls (1) - list directory contents
cp (1) - copy files and directories
rm (1) - remove files or directories
mv (1) - move (rename) files
Quindi puoi vedere che il comando whatis gestisce facilmente più input.
T3. Possiamo usare i caratteri jolly con whatis?
Sì, è possibile utilizzare i caratteri jolly con il comando whatis. L'opzione della riga di comando -w abilita questa funzione.
Ecco un esempio;
whatis -w 'who*'
E il seguente è l'output:
who (1) - show who is logged on
whoami (1) - print effective userid
Q4. Come fare in modo che cosa produca informazioni di debug?
L'opzione -d fa in modo che il comando whatis produca informazioni di debug in output. Inutile dire che questa opzione è principalmente per gli sviluppatori.
Ecco un esempio:
whatis -d ls
E di seguito è riportato l'output prodotto da questo comando:
From the config file /etc/manpath.config:
Mandatory mandir `/usr/man'.
Mandatory mandir `/usr/share/man'.
Mandatory mandir `/usr/local/share/man'.
Path `/bin' mapped to mandir `/usr/share/man'.
Path `/usr/bin' mapped to mandir `/usr/share/man'.
Path `/sbin' mapped to mandir `/usr/share/man'.
Path `/usr/sbin' mapped to mandir `/usr/share/man'.
Path `/usr/local/bin' mapped to mandir `/usr/local/man'.
Path `/usr/local/bin' mapped to mandir `/usr/local/share/man'.
Path `/usr/local/sbin' mapped to mandir `/usr/local/man'.
Path `/usr/local/sbin' mapped to mandir `/usr/local/share/man'.
Path `/usr/X11R6/bin' mapped to mandir `/usr/X11R6/man'.
Path `/usr/bin/X11' mapped to mandir `/usr/X11R6/man'.
Path `/usr/games' mapped to mandir `/usr/share/man'.
Path `/opt/bin' mapped to mandir `/opt/man'.
Path `/opt/sbin' mapped to mandir `/opt/man'.
Global mandir `/usr/man', catdir `/var/cache/man/fsstnd'.
Global mandir `/usr/share/man', catdir `/var/cache/man'.
Global mandir `/usr/local/man', catdir `/var/cache/man/oldlocal'.
Global mandir `/usr/local/share/man', catdir `/var/cache/man/local'.
Global mandir `/usr/X11R6/man', catdir `/var/cache/man/X11R6'.
Global mandir `/opt/man', catdir `/var/cache/man/opt'.
Added section `1'.
Added section `n'.
Added section `l'.
Added section `8'.
Added section `3'.
Added section `2'.
Added section `3posix'.
Added section `3pm'.
Added section `3perl'.
Added section `3am'.
Added section `5'.
Added section `4'.
Added section `9'.
Added section `6'.
Added section `7'.
`/usr/man' `' `1'
`/usr/share/man' `' `1'
`/usr/local/share/man' `' `1'
`/bin' `/usr/share/man' `0'
`/usr/bin' `/usr/share/man' `0'
`/sbin' `/usr/share/man' `0'
`/usr/sbin' `/usr/share/man' `0'
`/usr/local/bin' `/usr/local/man' `0'
`/usr/local/bin' `/usr/local/share/man' `0'
`/usr/local/sbin' `/usr/local/man' `0'
`/usr/local/sbin' `/usr/local/share/man' `0'
`/usr/X11R6/bin' `/usr/X11R6/man' `0'
`/usr/bin/X11' `/usr/X11R6/man' `0'
`/usr/games' `/usr/share/man' `0'
`/opt/bin' `/opt/man' `0'
`/opt/sbin' `/opt/man' `0'
`/usr/man' `/var/cache/man/fsstnd' `-1'
`/usr/share/man' `/var/cache/man' `-1'
`/usr/local/man' `/var/cache/man/oldlocal' `-1'
`/usr/local/share/man' `/var/cache/man/local' `-1'
`/usr/X11R6/man' `/var/cache/man/X11R6' `-1'
`/opt/man' `/var/cache/man/opt' `-1'
`1' `' `-5'
`n' `' `-5'
`l' `' `-5'
`8' `' `-5'
`3' `' `-5'
`2' `' `-5'
`3posix' `' `-5'
`3pm' `' `-5'
`3perl' `' `-5'
`3am' `' `-5'
`5' `' `-5'
`4' `' `-5'
`9' `' `-5'
`6' `' `-5'
`7' `' `-5'
path directory /usr/local/sbin is in the config file
adding /usr/local/man to manpath
adding /usr/local/share/man to manpath
path directory /usr/local/bin is in the config file
/usr/local/man is already in the manpath
/usr/local/share/man is already in the manpath
path directory /usr/sbin is in the config file
adding /usr/share/man to manpath
path directory /usr/bin is in the config file
/usr/share/man is already in the manpath
path directory /sbin is in the config file
/usr/share/man is already in the manpath
path directory /bin is in the config file
/usr/share/man is already in the manpath
path directory /usr/games is in the config file
/usr/share/man is already in the manpath
path directory /usr/local/games is not in the config file
but does have a ../man, man, ../share/man, or share/man subdirectory
/usr/local/man is already in the manpath
path directory /snap/bin is not in the config file
and doesn't have ../man, man, ../share/man, or share/man subdirectories
adding mandatory man directories
warning: /usr/man: No such file or directory
/usr/share/man is already in the manpath
/usr/local/share/man is already in the manpath
add_nls_manpaths(): processing /usr/local/man:/usr/local/share/man:/usr/share/man
checking for locale en_IN
adding /usr/local/man to manpathlist
adding /usr/local/share/man to manpathlist
adding /usr/share/man to manpathlist
adding /usr/local/man to manpathlist
adding /usr/local/share/man to manpathlist
adding /usr/share/man to manpathlist
Removing duplicate manpath entry /usr/local/share/man (1) -> /usr/local/man (0)
Removing duplicate manpath entry /usr/local/man (2) -> /usr/local/man (0)
Removing duplicate manpath entry /usr/local/share/man (2) -> /usr/local/man (0)
Removing duplicate manpath entry /usr/share/man (2) -> /usr/share/man (1)
final search path = /usr/local/man:/usr/share/man
path=/usr/local/man
warning: can't read the fallback whatis text database /usr/local/man/whatis
path=/usr/share/man
name: ls
sec. ext: 1
section: 1
comp. ext: gz
id: A
mtime: 1516268629.000000000
pointer: -
filter: -
whatis: list directory contents
ls (1) - list directory contents
hashtable_free: 1 entries, 1 (100%) unique
Q5. In che modo whatis esegue le sue ricerche?
Ecco un estratto rilevante dalla pagina man:
I database dell'indiceindex databases are used during the search, and are updated by the
mandb program. Depending on your installation, this may be run by a
periodic cron job, or may need to be run manually after new manual
pages have been installed. To produce an old style text whatis data?
base from the relative index database, issue the command:
whatis -M manpath -w '*' | sort > manpath/whatis
where manpath is a manual page hierarchy such as /usr/man.
Conclusione
Se ti piacciono troppo gli strumenti della riga di comando di Linux, o il tuo lavoro quotidiano prevede la gestione delle pagine man, il comando whatis potrebbe essere uno strumento utile per te. Abbiamo già discusso alcune opzioni della riga di comando di whatis qui. Per maggiori informazioni, vai alla pagina man dello strumento.