Comando man: uso e opzioni, numeri di sezione e ricerca con man -k
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
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 12LS(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-cmd9No manual entry for no-such-cmd9echo $?16La 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
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.
| Sezione | Pagine contenute | Esempio visto sul server AlmaLinux 9.8 |
|---|---|---|
| 1 | Programmi eseguibili e comandi della shell | ls, passwd, crontab, man |
| 2 | Chiamate di sistema (funzioni fornite dal kernel) | |
| 3 | Funzioni di libreria | |
| 4 | File speciali (di solito sotto /dev) | |
| 5 | Formati di file e convenzioni, ad es. /etc/passwd | crontab |
| 6 | Giochi | |
| 7 | Varie (pacchetti di macro e convenzioni) | |
| 8 | Comandi di amministrazione del sistema, di solito per root | useradd, mandb |
| 9 | Routine 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 crontabcrontab (1) - maintains crontab files for individual users
crontab (5) - files used to schedule the execution of programsEseguendo [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 4CRONTAB(5) File Formats CRONTAB(5)
NAME
crontab - files used to schedule the execution of programsLa 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 passwdNo manual entry for passwd in section 5Sul 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 passwdpasswd (1) - change user password
passwd (1ssl) - OpenSSL application commands
passwd (5) - the password fileLa sezione 8 contiene comandi di amministrazione eseguiti soprattutto dall'account root, come useradd, che crea gli account.
man -f useradduseradd (8) - create a new user or update default new user information3️⃣ Opzioni del comando man e ricerca con -k e -f
[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 passwdpasswd (1) - update user's authentication tokens
passwd (1ossl) - OpenSSL application commandsLa 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-word9no-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.gzman -w 5 crontab/usr/share/man/man5/crontab.5.gzI 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.
| Opzione | Copia | Descrizione |
|---|---|---|
| -f, --whatis | Mostra la descrizione di una riga delle pagine con lo stesso nome. Equivale a whatis | |
| -k, --apropos | Cerca nei nomi delle pagine e nelle descrizioni brevi. Equivale a apropos | |
| -w, --where, --path, --location | Mostra solo la posizione del file sorgente, senza aprire la pagina | |
| -a, --all | Mostra una dopo l'altra tutte le pagine con il nome corrispondente |
| Opzione | Copia | Descrizione |
|---|---|---|
| -K, --global-apropos | Cerca una parola nel testo di tutte le pagine. Richiede molto tempo | |
| -S, -s, --sectionselenco | Indica le sezioni in cui cercare e il loro ordine come elenco separato da virgole o due punti | |
| -P, --pagerpager | Indica il pager con cui mostrare la pagina. Il valore predefinito è less | |
| -M, --manpathpercorso | Indica il percorso dei manuali in cui cercare le pagine | |
| -L, --localelocale | Indica il locale da usare per questa esecuzione | |
| -l, --local-file | Mostra il file indicato come pagina, senza cercare nei manuali di sistema | |
| -u, --update | Aggiorna le cache dell'indice delle pagine installate | |
| -V, --version | Stampa 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].
4️⃣ Struttura di una pagina di man
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 ALSOman crontab | grep -E '^[A-Z]+( [A-Z]+)*$'NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHORI nomi delle sezioni cambiano un po' da una pagina all'altra, e le più frequenti sono le seguenti.
| Sezione | Contenuto |
|---|---|
| NAME | Nome e descrizione di una riga (la riga mostrata da man -f e man -k) |
| SYNOPSIS | Forma in cui si scrive il comando |
| DESCRIPTION | Descrizione del funzionamento (la pagina di ls riporta qui anche le opzioni) |
| OPTIONS | Un paragrafo per ogni opzione |
| EXIT STATUS | Significato dei codici di uscita |
| FILES | File che il comando legge o scrive |
| SEE ALSO | Pagine 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 3Usage: 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
Pianificazione
Linux: configurazione di crontab
Come pianificare con il comando crontab le attività del server perché vengano eseguite a orari stabiliti.
Trovare la posizione
Linux which, whereis, locate: 3 comandi per trovare la posizione (percorso) di un file
Comandi per trovare in quale percorso si trovano il file eseguibile e il file di manuale di un comando.
Passare l'output
Reindirizzamento in Linux (Redirection)
Il flusso di standard input e standard output che invia l'output di un comando a un file o a un altro comando.
ℹ️ 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.