Comando man: uso e opzioni, numeri di sezione e ricerca con man -k

Ambiente di testFamiglia RHELAlmaLinux 9.8man-db 2.9account rootDebian 12 · man-db 2.11 account normale
Comandi della shellman, whatis, aproposPosizione/usr/bin/man

Per controllare come si usa un comando o un file di configurazione su un server Linux, si apre la pagina di manuale con il comando man e, quando non si conosce il nome, si cerca nelle descrizioni brevi con man -k. Cercando la pagina di passwd su server AlmaLinux 9 e Debian 12, Debian 12 aveva sia la pagina dei comandi della sezione 1 sia la pagina dei formati di file della sezione 5, mentre AlmaLinux 9 non aveva una pagina nella sezione 5.

L'output qui sotto è stato ottenuto su un server AlmaLinux 9.8 con l'account root e su un server Debian 12 con un account normale. Il nome host e l'indirizzo di connessione del simulatore sono valori di esempio.

1️⃣ Uso di base del comando man

  • ↪️ Aprire una pagina, spostarsi nella schermata, pagine inesistenti

Scrivendo il nome di un comando dopo man si apre la pagina di manuale di quel comando. man passa la pagina a un programma pager che la mostra una schermata alla volta, quindi non torna subito al prompt dopo l'esecuzione. Il pager si imposta con la variabile d'ambiente MANPAGER o PAGER e, se sono entrambe vuote, viene usato less.

Se l'output passa attraverso una pipe, esce solo il testo, senza pager. Prendendo con head le prime 12 righe di [man ls], la prima riga conteneva LS(1) e poi seguivano in ordine le sezioni NAME, SYNOPSIS e DESCRIPTION.

man ls | head -n 12
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci-
       fied.

Il numero 1 tra parentesi in LS(1), nella prima riga, è il numero della sezione che contiene questa pagina.

All'interno di una pagina, [Space] mostra la schermata successiva e [/parola] seguito da Enter cerca una parola. [n] passa al punto successivo in cui compare la stessa parola e [q] chiude man.

Scrivendo un nome che non esiste compare l'errore [No manual entry for], e il codice di uscita era 16.

man no-such-cmd9
No manual entry for no-such-cmd9
echo $?
16

La sezione EXIT STATUS della pagina di man descrive 16 come il valore per il caso in cui almeno una delle pagine, dei file o delle parole non è stata trovata. Un errore d'uso vale 1, quindi uno script può gestire i due casi separatamente.

2️⃣ Numeri di sezione di man

  • ↪️ 1 comandi, 5 file di configurazione, 8 comandi di amministrazione

Quando esistono pagine con lo stesso nome in più sezioni, man cerca nelle sezioni secondo un ordine prestabilito e apre solo la prima pagina trovata. Le sezioni vanno da 1 a 9, e quelle aperte più spesso nel lavoro sui server sono la sezione 1 dei comandi, la sezione 5 dei formati di file e la sezione 8 dei comandi di amministrazione.

SezionePagine contenuteEsempio visto sul server AlmaLinux 9.8
1Programmi eseguibili e comandi della shellls, passwd, crontab, man
2Chiamate di sistema (funzioni fornite dal kernel)
3Funzioni di libreria
4File speciali (di solito sotto /dev)
5Formati di file e convenzioni, ad es. /etc/passwdcrontab
6Giochi
7Varie (pacchetti di macro e convenzioni)
8Comandi di amministrazione del sistema, di solito per rootuseradd, mandb
9Routine del kernel (non standard)

crontab ha pagine in due sezioni perché il comando e il formato del file di configurazione hanno lo stesso nome. Controllando con [man -f crontab] sono uscite insieme le righe delle sezioni 1 e 5.

man -f crontab
crontab (1)          - maintains crontab files for individual users
crontab (5)          - files used to schedule the execution of programs

Eseguendo [man crontab] senza numero di sezione si apre la pagina del comando crontab della sezione 1. Per vedere il formato del file delle attività pianificate si scrive 5 prima del nome.

man 5 crontab | head -n 4
CRONTAB(5)                       File Formats                       CRONTAB(5)

NAME
       crontab - files used to schedule the execution of programs

La prima riga è diventata CRONTAB(5) e File Formats, e anche nella riga NAME è comparsa la descrizione del file delle attività pianificate al posto di quella del comando.

Se nella sezione indicata non c'è una pagina con quel nome, compare un errore. Sul server AlmaLinux 9.8, eseguendo [man 5 passwd] per vedere il formato del file /etc/passwd è uscito un errore che segnalava l'assenza di una pagina nella sezione 5.

man 5 passwd
No manual entry for passwd in section 5

Sul server Debian 12, [man -f passwd] mostrava anche la riga di passwd della sezione 5. In quali sezioni ci sia una pagina dipende dai manuali installati sul server, quindi prima di aggiungere un numero di sezione conviene controllare con [man -f].

man -f passwd
passwd (1)           - change user password
passwd (1ssl)        - OpenSSL application commands
passwd (5)           - the password file

La sezione 8 contiene comandi di amministrazione eseguiti soprattutto dall'account root, come useradd, che crea gli account.

man -f useradd
useradd (8)          - create a new user or update default new user information

3️⃣ Opzioni del comando man e ricerca con -k e -f

  • ↪️ whatis, apropos e posizione dei file con man -w

[man -f] mostra la descrizione di una riga delle pagine con lo stesso nome e funziona come whatis. Eseguendo [man -f passwd] e [whatis passwd] sul server AlmaLinux 9.8 sono uscite le stesse due righe.

man -f passwd
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

La riga 1ossl è la pagina di un comando OpenSSL che usa lo stesso nome passwd.

Quando non si conosce il nome, [man -k] cerca nei nomi delle pagine e nelle descrizioni brevi. Funziona come apropos, e la parola viene letta come espressione regolare.

man -k '^passwd'
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

^ indica l'inizio della riga, quindi sono uscite solo le righe che iniziano con passwd. Si può cercare anche con una parola della descrizione: [man -k 'directory contents'] ha trovato le pagine dir e vdir insieme a ls.

man -k 'directory contents'
dir (1)              - list directory contents
ls (1)               - list directory contents
vdir (1)             - list directory contents

[man -k] cerca solo nelle descrizioni brevi della sezione NAME, quindi non trova una pagina a partire dal nome di un'opzione o da una parola del testo. [man -K], che cerca anche nel testo, legge tutte le pagine una dopo l'altra e richiede molto tempo.

Se la parola cercata non c'è, compare [nothing appropriate], e il codice di uscita era 16.

man -k no-such-word9
no-such-word9: nothing appropriate.
echo $?
16

[man -w] mostra solo la posizione del file sorgente, senza aprire la pagina.

man -w ls
/usr/share/man/man1/ls.1.gz
man -w 5 crontab
/usr/share/man/man5/crontab.5.gz

I due file si trovavano nelle cartelle man1 e man5 sotto /usr/share/man, e il numero nel nome della cartella corrispondeva al numero di sezione. Anche il file della pagina 1ossl, trovato con [man -w 1ossl passwd], era nella cartella man1, la stessa della sezione 1.

Le opzioni sono raccolte nelle due schede qui sotto.

OpzioneCopiaDescrizione
-f, --whatisMostra la descrizione di una riga delle pagine con lo stesso nome. Equivale a whatis
-k, --aproposCerca nei nomi delle pagine e nelle descrizioni brevi. Equivale a apropos
-w, --where, --path, --locationMostra solo la posizione del file sorgente, senza aprire la pagina
-a, --allMostra una dopo l'altra tutte le pagine con il nome corrispondente
OpzioneCopiaDescrizione
-K, --global-aproposCerca una parola nel testo di tutte le pagine. Richiede molto tempo
-S, -s, --sectionselencoIndica le sezioni in cui cercare e il loro ordine come elenco separato da virgole o due punti
-P, --pagerpagerIndica il pager con cui mostrare la pagina. Il valore predefinito è less
-M, --manpathpercorsoIndica il percorso dei manuali in cui cercare le pagine
-L, --localelocaleIndica il locale da usare per questa esecuzione
-l, --local-fileMostra il file indicato come pagina, senza cercare nei manuali di sistema
-u, --updateAggiorna le cache dell'indice delle pagine installate
-V, --versionStampa le informazioni sulla versione

🔲 Simulatore del comando man

Nel simulatore qui sotto si può aprire una pagina con [man ls] e scorrere le schermate con i chip [Space], [/list], [n] e [q]. Sullo stesso server virtuale si può aggiungere un numero di sezione, come in [man 5 crontab], oppure digitare [man -f], [man -k] e [man -w].

Simulatore del comando manman-db 2.9 · account root
[root@server work]#
Funziona solo all'interno del browser. Nella schermata di una pagina si premono i chip Space, /parola, n e q, e con ↑↓ sulla tastiera si richiamano i comandi digitati in precedenza.

4️⃣ Struttura di una pagina di man

  • ↪️ Leggere NAME, SYNOPSIS, DESCRIPTION e OPTIONS

Una pagina di man è divisa in sezioni con titoli in maiuscolo. Estraendo solo i titoli con grep e confrontandoli, la pagina di ls aveva la descrizione delle opzioni dentro DESCRIPTION, mentre la pagina di crontab aveva una sezione OPTIONS a parte.

man ls | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
AUTHOR
REPORTING BUGS
COPYRIGHT
SEE ALSO
man crontab | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHOR

I nomi delle sezioni cambiano un po' da una pagina all'altra, e le più frequenti sono le seguenti.

SezioneContenuto
NAMENome e descrizione di una riga (la riga mostrata da man -f e man -k)
SYNOPSISForma in cui si scrive il comando
DESCRIPTIONDescrizione del funzionamento (la pagina di ls riporta qui anche le opzioni)
OPTIONSUn paragrafo per ogni opzione
EXIT STATUSSignificato dei codici di uscita
FILESFile che il comando legge o scrive
SEE ALSOPagine correlate

I simboli della SYNOPSIS seguono regole stabilite dalla pagina di man. Ciò che è tra parentesi quadre si può omettere. Le opzioni separate da una barra verticale (|) non si possono usare insieme, e un argomento seguito da tre punti (...) si può scrivere più volte.

La SYNOPSIS di ls è ls [OPTION]... [FILE]..., quindi sia le opzioni del comando sia gli argomenti della riga di comando, come i nomi dei file, si possono omettere del tutto o scrivere più volte.

[--help] è un riepilogo d'uso stampato dal programma stesso, quindi esce direttamente nel terminale, senza pager. Lo Usage della prima riga di [ls --help] aveva la stessa forma della SYNOPSIS, e l'output completo era di 121 righe, meno delle 245 righe di [man ls].

ls --help | head -n 3
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Una pagina di man ha altre sezioni che in [--help] mancano, come AUTHOR e SEE ALSO. Per vedere rapidamente una singola opzione si usa [--help]; quando serve una spiegazione divisa in sezioni, come il formato di un file di configurazione o i codici di uscita, si apre man.

🔢 FAQ & contenuti consigliati

cd è un comando interno di bash, quindi [man cd] porta alla pagina che raccoglie tutti i comandi interni. Sul server AlmaLinux 9.8, [type cd] ha mostrato [cd is a shell builtin] e [man -w cd] ha mostrato la posizione del file builtins.1.gz. L'uso di un singolo comando interno si controlla direttamente con [help cd].

Eseguendo [man -a nome] si aprono una dopo l'altra le pagine con il nome corrispondente. Per vedere solo la posizione dei file si aggiunge [-w]. Eseguendo [man -w -a crontab] sul server AlmaLinux 9.8 sono uscite due righe con i file di crontab nelle cartelle man1 e man5.

L'indice in cui cercano [man -k] e [man -f] viene creato e aggiornato da mandb. Per questo una pagina che non è ancora nell'indice non compare nei risultati della ricerca, e l'indice si ricostruisce eseguendo [mandb] con l'account root.

ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Dimostra di essere umano: 1   +   4   =