Lidando com a pesquisa de manpages

3

Parece que man -K não pesquisa a saída formatada, mas a fonte de marcação. Por exemplo

 man -K warranties

fornece muitos manpages que não contêm a string warranties , como xcalc (1). Além disso, pesquisar por strings contendo caracteres especiais é muito difícil:

 man -K 7 '\f'

fornece muitas páginas que não contêm \f .

 man -K 7 '\f'

parece não exibir falsos positivos, mas também não exibe ascii (7), que contém a string \f .

Como faço para contornar isso?

    
por wolf-revo-cats 21.01.2016 / 22:21

1 resposta

1

De acordo com o manual do Linux , seu primeiro exemplo procuraria pelo literal \f , que você encontraria na maioria das páginas de manual para alterar fontes, por exemplo,

The international counterpart of ASCII is known as ISO 646.
.LP
The following table contains the 128 ASCII characters.
.LP
C program \f(CW\(aq\eX\(aq\fP escapes are noted.
.if t \{\
.ft CW
\}
.TS
l l l l l l l l.

que mostra uma seção de ascii(7) do pacote 3.44-1 do Debian para manpages . Este arquivo não contém outras instâncias de \f e nenhuma de \f .

Como o FreeBSD man não possui a opção -K e o OSX ascii.7 não tem comutação de fontes usando \f , é provável que você esteja referindo-se ao Linux. O programa man do Linux suporta expressões regulares - como uma opção --regex . Por padrão, ele não usa expressões regulares.

Como você está procurando o formatado \f , deve procurar a marcação que produz esse par de caracteres. Em ascii.7 , a linha mostrando

014   12    0C    FF  '\f' (form feed)        114   76    4C    L

é produzido por

012     10      0A      LF  \(aq\en\(aq (new line)      112     74      4A      J

Ou seja, está usando a macro groff \en , que você pode pesquisar:

man -K 7 '\en'

e obtenha uma saída muito mais curta (5811 linhas no meu Debian 7 versus 57322). Apenas as linhas de cabeçalho / rodapé são suficientes para mostrar o resultado aqui:

ASCII(7)                    Linux Programmer's Manual                    ASCII(7)
Linux                               2009-02-12                           ASCII(7)
COPY(7)                  PostgreSQL 9.1.22 Documentation                  COPY(7)
PostgreSQL 9.1.22                   2016-05-27                            COPY(7)
CPUSET(7)                   Linux Programmer's Manual                   CPUSET(7)
Linux                               2008-11-12                          CPUSET(7)
GITCORE-TUTORIAL(7)                 Git Manual                GITCORE-TUTORIAL(7)
Git 1.7.10.4                        03/19/2016                GITCORE-TUTORIAL(7)
GROFF_CHAR(7)                                                       GROFF_CHAR(7)
Groff Version 1.21                 25 June 2012                     GROFF_CHAR(7)
GROFF_MDOC(7)          BSD Miscellaneous Information Manual         GROFF_MDOC(7)
GROFF_TRACE(7)                                                     GROFF_TRACE(7)
Groff Version 1.21                 25 June 2012                    GROFF_TRACE(7)
MAN(7)                      Linux Programmer's Manual                      MAN(7)
Linux                               2012-08-05                             MAN(7)

Isso, obviamente, depende do conhecimento da marcação relevante (e provavelmente haverá diferentes maneiras de expressar a mesma coisa). A razão pela qual man olha para a marcação é que ela não pode confiar em poder pesquisar páginas de manual formatadas .

Um tempo atrás, era comum ter catman diretórios que armazenavam páginas de manual formatadas porque

    A formatação manual das páginas
  • foi lenta e
  • alguns fornecedores não distribuíram páginas de manual formatadas (ou algumas, como a Sun, forneceram marcação em formato não negativo, complicando as coisas)

Pode-se fazer um índice KWIC de todos as palavras em todas as páginas de manual como formatadas, mas que ainda

  • ocupa muito espaço e
  • leva muito tempo para gerar
por 04.08.2016 / 01:10

Tags