Linux / Comando apropos: buscar manuais por descrição

apropos procura palavras-chave nos nomes e nas descrições curtas das páginas de manual. Use-o quando souber a tarefa, como copiar arquivos ou configurar uma rede, mas ainda não conhecer o nome do comando. No man-db, a busca usa o índice da documentação instalada, e não todos os programas existentes ou disponíveis nos repositórios.

man -k fornece a mesma funcionalidade de busca. Como os termos de pesquisa padrão podem ser processados como expressões regulares, entender os relacionamentos entre múltiplas palavras, pesquisas por correspondência exata, curingas e regras de citação do shell pode gerar resultados mais precisos.

O que é o comando apropos?

Cada página do manual tem uma breve descrição resumindo seu nome e funcionalidade. apropos pesquisa os nomes das páginas e descrições no banco de dados de índice man-db e exibe as entradas correspondentes.

A busca não percorre todo o corpo dos manuais. Uma página pode ficar fora dos resultados se nem seu nome nem sua descrição curta contiverem o termo, mesmo que o assunto apareça no texto completo. Os exemplos deste artigo pressupõem apropos do man-db e as páginas e índices relevantes instalados.

Sintaxe básica e leitura de resultados

O esquema abaixo não é um comando pronto para executar: colchetes indicam opções e as reticências indicam que você pode informar várias palavras-chave. Não digite esses sinais literalmente nos exemplos seguintes.

apropos [opções] palavra-chave...

Aqui está um exemplo de como encontrar manuais relacionados à cópia de arquivos.

apropos copy

Um resultado pode ter a estrutura abaixo. Este é um exemplo de descrições em inglês; os nomes, a redação e a quantidade de linhas dependem das páginas instaladas, da versão e do idioma selecionado. Não espere uma lista idêntica em todo sistema.

cp (1)               - copy files and directories
scp (1)              - OpenSSH secure file copy

O primeiro campo é o nome da página do manual, o número entre parênteses é a seção, e a descrição após o hífen é uma explicação de uma linha. Uma vez que você encontrar o item desejado, especifique a seção para abrir a página exata.

man 1 cp
man 1 scp

Métodos de pesquisa com múltiplas palavras-chave

O padrão é exibir se pelo menos uma corresponder

Ao especificar múltiplas palavras-chave, por padrão, itens que correspondam a qualquer uma delas podem ser exibidos. O alcance da pesquisa pode ficar amplo, resultando em muitos resultados.

apropos network address

Use -a se todos os termos-chave forem necessários

-a ou --and mostra apenas itens que correspondem a todos os termos-chave especificados. É útil para reduzir resultados não relacionados.

apropos -a network address
apropos --and user password

Você pode usar aspas para agrupar várias palavras em uma única expressão de pesquisa, mas tenha em mente que a pesquisa padrão é uma expressão regular.

Expressões regulares, pesquisas exatas e curingas

Pesquisa básica de expressão regular

Por padrão, o apropos do man-db interpreta cada termo como uma expressão regular, um padrão de correspondência de texto. Ponto, colchetes e asterisco podem ter significado especial. As aspas protegem o argumento da interpretação do shell, mas não desativam a expressão regular usada pelo apropos.

apropos '^ssh'
apropos 'file.*system'

^ssh exige que o nome ou a descrição comece por ssh. Em file.*system, .* admite zero ou mais caracteres entre file e system. A comparação é feita separadamente com os nomes e com as descrições.

Correspondência exata com -e

-e, ou --exact, exige correspondência exata com o nome da página ou a descrição. Se você já conhece o nome exato da página, whatis pode ser mais simples.

apropos -e printf

Curingas do shell com -w

-w ou --wildcard usa curingas no estilo do shell. Coloque o padrão entre aspas para que a expansão de nomes de arquivo não ocorra antes da busca. Esse modo admite correspondências nos limites de palavras da descrição; combiná-lo com -e exige a correspondência do nome ou da descrição inteira. Confira as regras no manual apropos(1).

apropos -w 'ssh*'
apropos --wildcard '*password*'

Limitar a busca por seção

Usar -s ou --sections para limitar as seções manuais pode reduzir os resultados com o mesmo nome de outros documentos ou entradas não relacionadas.

apropos -s 1 archive
apropos -s 2,3 socket
apropos --sections=5 password
Seção Conteúdo principal
1 Comandos e programas executados por usuários gerais
2 Chamadas de sistema fornecidas pelo kernel Linux
3 Funções de bibliotecas de programas
5 Arquivos de configuração e formatos de arquivo
8 Comandos de gerenciamento do sistema usados principalmente por administradores

Separe as seções por vírgulas ou dois-pontos. No man-db, pedir uma seção simples, como 3, também pode incluir extensões como 3perl; pedir 3perl restringe a essa extensão. A disponibilidade das páginas depende da documentação instalada.

Opções apropos comumente usadas

Opção Descrição
-a, --and Imprime apenas itens que correspondem a todas as palavras-chave.
-e, --exact Corresponde exatamente às palavras-chave com os nomes ou descrições das páginas.
-r, --regex Trata as palavras-chave como expressões regulares. Este é o método de busca padrão no man-db.
-w, --wildcard Pesquisa com padrões curinga no estilo shell.
-s lista, --sections=lista Busca apenas nas seções específicas do manual.
-l, --long Impede que as descrições sejam cortadas na largura do terminal.
-M caminho, --manpath=caminho Especifique o caminho hierárquico do manual para pesquisar diretamente.
-L locale, --locale=locale Seleciona temporariamente o locale da busca.

Qual é a relação entre apropos e man -k?

No ambiente man-db, man -k é uma interface que utiliza as opções de pesquisa apropos. Os dois comandos a seguir podem ser usados para o mesmo propósito.

apropos filesystem
man -k filesystem

Escolha a forma que facilitar seu trabalho. A explicação do comando man em português mostra como abrir a página encontrada e selecionar a seção correta.

Pontos a verificar quando nenhum resultado de pesquisa aparecer

Mudar para uma palavra-chave mais geral

Use termos que possam aparecer nas descrições disponíveis. Sem páginas traduzidas instaladas e selecionadas pelo locale, palavras em português podem não encontrar resultados. Nesse caso, experimente os termos em inglês abaixo. Locale é a configuração de idioma e convenções regionais usada pelo ambiente.

apropos compress
apropos archive
apropos -a user account

Atualizar o índice

Imediatamente após instalar um novo manual ou se o índice estiver corrompido, os resultados do apropos podem estar vazios. Em um ambiente man-db, você pode atualizar o índice com privilégios administrativos.

sudo mandb

mandb cria ou atualiza o índice das páginas já disponíveis; não instala comandos nem baixa documentação ausente. O exemplo com sudo precisa de privilégios administrativos e altera o cache do sistema. Algumas distribuições fazem essa atualização automaticamente, portanto não é necessário repeti-la sem motivo.

Conferir caminhos e locale

manpath
printf '%s\n' "$MANPATH"
locale

MANPATH pode alterar as hierarquias de manuais pesquisadas. -M substitui temporariamente esse caminho para uma execução; informe a raiz de uma hierarquia de manuais, não um arquivo isolado. -L seleciona temporariamente o locale da busca, mas não instala traduções. Uma variável MANPATH vazia não significa que nenhum caminho padrão será usado.

Usar em scripts de shell

No man-db, apropos retorna 0 em caso de sucesso, 1 para erro de uso ou configuração, 2 para erro operacional e 16 quando nada corresponde à busca. Para aproveitar essa distinção em automação, o script precisa preservar o código retornado, em vez de terminar com o sucesso de um printf.

Salve o exemplo completo como procurar-manual.sh. Ele exige Bash e apropos disponível. Execute, por exemplo, bash procurar-manual.sh printf; troque printf pelo nome exato de uma página que deseja consultar. Nenhuma permissão de execução é necessária quando o arquivo é passado ao comando bash.

#!/usr/bin/env bash
if [ "$#" -ne 1 ]; then
  printf '%s\n' 'Uso: bash procurar-manual.sh nome' >&2
  exit 1
fi

if apropos -e "$1" >/dev/null; then
  printf '%s\n' 'Há uma entrada de manual correspondente.'
else
  status=$?
  printf 'Sem resultado ou falha na busca: status=%d\n' "$status" >&2
  exit "$status"
fi

Logo após executar o script, echo "$?" mostra o estado retornado: uma correspondência produz a mensagem de sucesso e estado 0; uma busca sem resultado devolve 16; erros mantêm seu código. Sem um único argumento, o próprio script mostra o uso e retorna 1. Esses códigos de busca são do man-db e podem diferir em outra implementação; confira man apropos.

Comparar comandos de consulta

Comando Propósito
apropos palavra Procura por tópicos ou palavras-chave no nome da página e na descrição de uma linha.
whatis nome Verifica a descrição de uma linha do nome exato da página do manual.
man nome Lê o conteúdo completo da página do manual selecionada.
man -K texto Pesquisa texto nos arquivos-fonte dos manuais, incluindo marcação; pode demorar e diferir do texto formatado.

Perguntas frequentes

Posso pesquisar com palavras-chave localizadas?

Sim, quando descrições em português estão instaladas e são selecionadas pelo locale. Se houver somente descrições em inglês, procure palavras em inglês. Alterar o idioma da busca não cria uma tradução ausente.

E se o termo de pesquisa contiver espaços?

Para passá-lo como uma única expressão, coloque-o entre aspas. Se você passar várias palavras-chave independentes e usar -a, ele só encontrará entradas onde cada palavra corresponda.

Devo usar apropos em vez de which?

Eles têm propósitos diferentes. apropos encontra manuais relevantes, e command -v ou type verifica como o nome do comando inserido é realmente interpretado.

Resumo

apropos é útil quando você quer encontrar um comando ou documento por palavras-chave de funcionalidade sem saber seu nome. Você pode encontrar candidatos com a pesquisa básica, satisfazer múltiplas condições com -a e restringir seções com -s para organizar os resultados de forma eficiente.

Depois de encontrar a página que você deseja, abra-a com man junto com o número da seção. Para outros comandos básicos, consulte a referência de comandos Linux em português.

Documentação oficial