Listar seções da página man disponíveis para um aplicativo

6

Estou pensando nas seções da página man 1 = comandos do usuário , 2 = chamadas do sistema etc.

Existe uma maneira, um comando que vai me dizer quais seções estão disponíveis para ler além de executar algo como man 1 gedit , man 2 gedit , man 3 gedit etc?

    
por Oscalation 19.01.2016 / 02:16

5 respostas

3

Uma opção:

apropos fork

para limitar a palavra exata:

apropos -e fork

Alternativamente, como apropos usa regex por padrão:

apropos "^fork$"

Como alternativa, use man -k em vez de apropos .

Confira as man pages para apropos e man para mais detalhes.

    
por 19.01.2016 / 02:26
4

Com o man de man-db , pelo menos:

$ man -f open
open (2)             - open and possibly create a file
open (1)             - start a program on a new virtual terminal (VT).
open (3tcl)          - Open a file-based or command pipeline channel
open (3perl)         - perl pragma to set default PerlIO layers for input and output

O mesmo que:

$ whatis open
open (2)             - open and possibly create a file
open (1)             - start a program on a new virtual terminal (VT).
open (3tcl)          - Open a file-based or command pipeline channel
open (3perl)         - perl pragma to set default PerlIO layers for input and output

Ou para obter os caminhos das páginas man:

$ man -wa open
/usr/share/man/man1/openvt.1.gz
/usr/share/man/man3/open.3tcl.gz
/usr/share/man/man2/open.2.gz
/usr/share/man/man3/open.3perl.gz

Para ler todas as páginas man sobre um determinado tópico, man -a é muito comum.

Note, entretanto, que algumas implementações rodam uma instância do pager para cada página man (você precisa sair do pager para chegar à próxima man page e não há como voltar), enquanto outras passam as man pages como argumentos separados para uma invocação de pager único (e você usa :n , :p , por exemplo, com o pager less para navegar pelas páginas).

    
por 19.01.2016 / 11:10
2

Se você é man do pacote "man-db", pode invocar isso para ver a página "intro" de cada seção do manual:

man -a intro

Se você souber a localização do banco de dados de man pages, isso listará todos os diretórios de seção (man1, man2, man3, etc):

(cd /usr/share/man; ls -d man*)

Além disso, se estiver usando man do pacote man-db , você poderá ver o local dos bancos de dados de páginas man invocando man -w (essa opção também existe no FreeBSD man , mas não tê-lo instalado, então eu não sei se dá a mesma saída). Por exemplo, no Debian 8 (jessie):

$ man -w
/usr/local/man:/usr/local/share/man:/usr/share/man

Usando man -w , um script simples para listar todos os números de seção disponíveis em todos os diretórios man database seria:

#!/bin/sh
IFS=":$IFS"
for i in $(man -w)
do
    (
        cd "$i"
        for j in man*
        do
            if [ -d "$j" ]
            then
                echo "${j#man}"
            fi
        done
    )
done | sort -u
    
por 19.01.2016 / 02:58
2

Eu uso meu gerenciador de pacotes para fazer esse tipo de coisa.

No Archlinux:

pacman -Ql gedit | grep /man/

RH / Fedora:

dnf repoquery -l gedit | grep /man/

Debian / Ubuntu /...

dpkg-query -L gedit | grep /man/
    
por 19.01.2016 / 10:21
1

O seguinte comando deve listar todas as seções da página man disponíveis para um determinado comando:

find /usr/share/man -name "<command>.*.gz" | egrep -o '[0-9]' | sort -u
    
por 19.01.2016 / 02:42