Una pagina man per fork
, ad esempio, è nella sezione Chiamate di sistema che ha il numero 2:
man 2 fork
Come vedi cos'altro è la sezione 2 senza ricorrere a Google?
Una pagina man per fork
, ad esempio, è nella sezione Chiamate di sistema che ha il numero 2:
man 2 fork
Come vedi cos'altro è la sezione 2 senza ricorrere a Google?
Risposte:
Questo comando elenca i nomi ordinati di tutte le voci nella sezione indicata:
man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u
Se vuoi vedere i nomi dei percorsi, usa:
man -aWS 1 \* | sed 's/\.[^.]*$//' | sort
Questo dice man
di cercare una sezione per tutti i comandi usando il modello jolly *
(citato da una barra rovesciata in modo che la shell non lo interpreti). -a
trova tutte le corrispondenze, -W
stampa i nomi dei percorsi anziché visualizzare le pagine e -S 1
specifica la sezione uno. Passa 1
alla sezione che desideri cercare.
Il sed
comando elimina le estensioni del nome file; rimuovilo se vuoi vedere i nomi di file completi. sort
ordina i risultati ( -u
rimuove i duplicati).
Per un comodo riutilizzo, questo definisce una funzione shell Bash:
function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }
Ad esempio, puoi invocarlo mansect 3
per vedere le voci nella sezione tre.
[Testato su macOS.]
uniq
in pipeline non risolve.
sort -u
per rimuovere i duplicati.
Per elencare tutte le pagine man installate da una sezione specifica è possibile usare apropos :
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 2 '*'
Le pagine man sono generalmente posizionate /usr/share/man
, ma spuntano $MANPATH
e sono organizzate in sezioni in questo modo:
Section 1:
/usr/share/man/man1/
Section 2:
/usr/share/man/man2/
...
Quindi per elencare tutte le manpage della sezione 2 installate, fare:
ls /usr/share/man/man2/
O il più completo:
find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'
Quest'ultimo avrà problemi se si dispone di directory $MANPATH
con spazio nei loro nomi.
Sulla maggior parte delle distribuzioni puoi anche controllare le pagine man disponibili con uno strumento per pacchetti, ad esempio sulle distribuzioni derivate da Debian che puoi usare in questo apt-file
modo:
apt-file search /man2/
lman 2
Ed elenca il nome senza ornamenti per ogni pagina su una nuova riga e le pagine. Il corpo della funzione è:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
So che questa è una domanda molto antica, tuttavia le risposte fornite qui non hanno funzionato per me. Pertanto ho ideato il seguente one-liner che funziona su Ubuntu 18.04 e macOS Mojave, 10.14.6:
find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
Esecuzione rapida:
$(man --path | tr ':' ' ')
per ottenere i percorsi attuali delle pagine manfind <man paths> -type f -path '*man2*' -exec basename {} \;
ottiene i nomi dei file di tutti i file regolari nei percorsi mansed
elimina l'estensione del filesort
in ordine alfabetico.