Man pages

Il comando man

Man è uno strumento assai potente ma è bene chiarirne l’uso: i Man non sono una raccolta di tutorial e non servono per imparare l’uso dei comandi, sono guide veloci e dettagliate che presuppongono la conoscenza dell’argomento e del tool in discussione. I manuali  non  sono  lo  strumento  indicato  per  imparare  da  zero,  per  questo  sono più

adatti i classici tutorial disponibili sul web. Anche la qualità, nelle pagine dei manuali, è molto variabile: alcune sono ottimamente scritte, altre inaccurate o incomplete.  I  manuali sono normalmente scritti dagli stessi autori del programma e spesso non ripongono nello scrivere documentazione la stessa attenzione profusa nella programmazione.

Veniamo al funzionamento vero e proprio del comando man.

Il modo più semplice di utilizzare questo potente strumento è digitare il comando man seguito dal comando su cui ci si vuole documentare, sul relativo file di configurazione o altra parola chiave significativa:

$ man cp NAME

cp – copy files and directories

SYNOPSIS

cp [OPTION]… [-T] SOURCE DEST

cp [OPTION]… SOURCE… DIRECTORY cp [OPTION]… -t DIRECTORY SOURCE…

Ognuna delle pagine di manuale ricade sotto una delle 9 categorie riepilogate  nella tabella 1.

Tabella 1 categorizzazione delle pagine di man

Sezione Descrizione
1 Programmi eseguibili e comandi di shell
2 Chiamate di sistema operate dal kernel
3 Chiamate    di    libreria    operate    dalle    librerie                   dei programmi
4 File di device (spesso localizzati sotto /dev)
5 Formati dei file
6 Giochi
7 Varie (Macro pacchetti, convenzioni e simili)
8 Comandi di amminitrazione di sistema (eseguibili solo dall’utente root)
9 Routine del kernel

L’utilità di questa tabella si evidenzia in caso di argomenti omonimi. ad esempio per la parola chiave passwd:

$ man passwd
PASSWD(1) User Commands PASSWD(1)

NOME

passwd – cambia la password utente

SINOSSI

passwd [opzioni] [LOGIN]

DESCRIZIONE

Il comando passwd permette di cambiare le password per un account utente.

$ man                5 passwd

PASSWD(5)       Linux Programmer’s Manual              PASSWD(5)

NOME

passwd – file delle password DESCRIZIONE

Passwd è un file di testo che contiene un elenco degli account sul  sistema,  e  per  ciascuno di questi riporta alcune informazioni utili come user ID, group ID, home  directory, ecc.

Nell’esempio precedente, invocando la pagina di manuale con tanto di richiamo alla categoria 5 (il cinque fra “man” e “passwd” del secondo esempio), è stata richiamata la pagina della categoria “formati dei file” (relativa al file /etc/passwd), anzichè quella più comunemente richiesta della categoria 1, ossia “programmi eseguibili e comandi  di  shell” (relativa all’eseguibile /bin/passwd). Man stabilisce la priorità delle categorie secondo quanto impostato in /etc/man.conf: un utente alle prime armi non avrà probabilmente bisogno nè di modificare questo file, nè di specificare la categoria al momento dell’invocazione di man, poichè tipicamente avrà  bisogno  delle informazioni che il sistema man saprà restituire in automatico, ma un rapido accenno alla questione era almeno doveroso.

Struttura delle pagine di man

La struttura delle pagine di man segue un certo schema convenzionale che include  di  base diverse sezioni, ognuna delle quali ha una specifica funzione. Quelle più comuni sono:

  • Nome: ogni pagina di manuale comincia con la dichiarazione del comando, chiamata o file in trattazione, il tutto seguito da una brevissima descrizione.

$ man ls

LS(1)           User Commands       LS(1)                 NAME ls – list directory contents

  • Sinossi: La sinossi presenta brevemente come il comando va usato. Eventuali parametri opzionali saranno racchiusi fra parentesi quadre, mentre le parentesi tonde indicheranno la possibilità di inserire un set di elementi come argomento   al comando
    • Descrizione: Una breve descrizione su ciò che l’applicazione, file o file di configurazione fa o non fa. La lunghezza di questa sezione può variare da poche righe a diverse pagine, ma solitamente si attesta alle dimensioni di un tipico sommario.
    • Opzioni: Questa sezione estende e spiega le opzioni menzionate nella sinossi. Solitamente ogni opzione si presenta paragrafata singolarmente, ed include una spiegazione più o meno dettagliata delle funzionalità.
    • Files: Questa sezione elenca i file associati all’argomento in trattazione: ad esempio nel caso di un file eseguibile, verranno qui menzionati i relativi file di configurazione.
    • See also: Questa sezione fornisce eventuali informazioni correlate all’argomento  in trattazione disponibili altrove. Ad esempio, la pagina man di fdisk (uno strumento per partizionare i dischi), indica come ulteriori riferimenti le pagine   per cfdisk, sfdisk, parted ed altri strumenti utili allo stesso scopo.
    • Bugs: La sezione dedicata agli eventuali difetti e limitazioni relative all’argomento in trattazione o nel migliore dei casi dichiara che non sono noti difetti allo stato attuale.
    • Storico: Alcuni tool possono includere questa sezione per spiegare l’evoluzione storica dell’argomento in trattazione, come le date di inizio del progetto ed eventuale passaggi fondamentali degni di nota.
    • Autore: La sezione con i riferimenti ed i contatti dell’autore del programma o progetto in questione.

Oltre questo schema classico, possono essere presenti altre sezioni, a discrezione dell’autore del programma e/o della relativa pagina di manuale.

Navigare tra le pagine di man

Tipicamente il sistema man fa uso dello strumento less per scorrere le pagine di documentazione, ossia un impaginatore testuale funzionante via terminale. Le sue funzionalità includono lo spostamento avanti e indietro nel testo, la ricerca e lo spostamento a determinate righe del documento. La tabella 2 riepiloga i comandi principali

Tabella 2 – tasti di navigazione del comando less

Tasto Azione
h o H Mostra una guida interna all’utilizzo del comando
Pagina giù, Spazio, Ctrl+V, f, Ctrl+F Avanza di una schermata nel documento
Pagina su, Esc+V, b, Ctrl+B Torna indietro di una schermata nel documento
Freccia giù, Invio, Ctrl+N, e, Ctrl+E, j, Ctrl+j   Avanza di una linea nel documento
Freccia su, y, Ctrl+Y, Ctrl+P, k, Ctrl+K   Torna indietro di una linea nel documento
  [n]g, [n]<, [n]Esc+< Va alla linea [n] nel documento, esempio: 100g va alla linea numero 100. Se omesso il valore [n], il valore di default è 1
  [n]G, [n]>, [n]Esc+> Va alla linea [n] nel documento, esempio: 100G va alla linea numero 100. Se omesso il valore [n], il valore di default è l’ultima linea del documento
[n]p, [n]% Va al valore percentuale di [n] del documento, esempio: 50p va alla metà del documento
/[pattern] Ricerca in avanti nel documento per la stringa [pattern]
?[pattern] Ricerca a ritroso nel documento per la stringa [pattern]
n, / ripete la ricerca precedente
q, Q, :q, :Q, ZZ Esce dal paginatore less

Il comando less è invocato automaticamente dal comando man ma può essere utilizzato anche per leggere altri file di testo appendendo al comando less il file da aprire. Ovviamente i comandi di navigazione riepilogati in tabella 2.2B  saranno  altrettanto  validi.