Domine o Comando `man` do Linux: Segredos e Truques para Usuários de Todos os Níveis

As páginas de manual do Linux são a sua fonte de informação completa sobre este sistema operacional. Através delas, é possível descobrir como realizar uma tarefa específica, mesmo que desconheça o nome exato do comando necessário. Mas, como localizar essas páginas de manual? A seguir, apresentamos algumas dicas úteis.

Explorando o Manual do Linux

Existe uma piada antiga no mundo Linux (que remonta à era de ouro do Unix) de que o único comando essencial é man, o ponto de partida para o manual do usuário. Embora haja um fundo de verdade nessa afirmação, o próprio man pode ser confuso no início, especialmente quando se trata de encontrar as informações exatas de que você precisa.

Já se viu naquela situação em que sabe o que quer fazer, mas não tem ideia de qual comando é o correto para realizar a tarefa? Provavelmente, já passamos todos por isso. É como tentar procurar uma palavra no dicionário sem saber como ela se escreve.

Então, como superar este obstáculo e encontrar o que procura? Felizmente, existem algumas formas de contornar este problema com o man.

Outra questão que frequentemente confunde os novatos são os números que acompanham os comandos no manual. O que eles são e o que significam? Você verá referências como man (2) ou man (5) em documentos e na internet. Também encontrará comandos com números, como mount (2) e mount (8). Certamente, não pode haver mais de um comando mount, certo? Como veremos, esses números são importantes e bastante simples de entender.

E por falar em simplicidade, a pesquisa dentro do manual também é bastante intuitiva, uma vez que você domina o método. Existem várias maneiras de navegar e pesquisar dentro do man. Vamos explorar essas opções!

Abrindo o Manual do Linux

Para utilizar o man, digite man na linha de comando, seguido de um espaço e do nome do comando Linux que deseja consultar. O man abrirá a página de manual correspondente, com a descrição detalhada deste comando – se, é claro, ela existir.

Experimente digitar o seguinte para ver o que o man tem a dizer sobre ele mesmo:

man man

A página de manual do próprio man será exibida.

Como pode observar, esta é a página man (1).

Utilize as seguintes dicas para navegar pela página:

  • Para percorrer a página linha a linha: Use a roda do mouse, as setas direcionais (para cima e para baixo) ou a tecla Enter.
  • Para navegar de tela em tela: Utilize a barra de espaço ou as teclas PgDn e PgUp.
  • Para mover para o início ou fim da página: Use as teclas Home e End.

Se pressionar a tecla H, acessará a seção de ajuda, onde encontrará uma tabela com outras combinações de teclas que pode usar. No entanto, as opções acima provavelmente serão mais intuitivas para a maioria dos utilizadores.

Para sair do man, basta pressionar Q.

Anatomia de uma Página do Manual

No início da página, encontrará os títulos “Nome” e “Sinopse”. Existe uma convenção para a organização das páginas de manual. Existem páginas de manual para comandos, programas e funções de programação (rotinas de biblioteca). Nem todos estes títulos estarão presentes em todas as páginas, pois alguns são aplicáveis apenas a certos tipos de comandos.

A seguir, alguns dos títulos que poderá encontrar:

  • Nome: O nome do comando que está a ser descrito na página do manual.
  • Sinopse: Um resumo do comando e da sua sintaxe.
  • Configuração: Detalhes da configuração de um dispositivo.
  • Descrição: Uma explicação do que o programa faz.
  • Opções: Uma descrição das opções de linha de comando que o comando aceita.
  • Status de saída: Os possíveis valores de status de saída do comando e o que pode causar a sua utilização.
  • Valor de retorno: Se a página de manual for de uma rotina de biblioteca, isto descreve o valor que a rotina pode retornar à função que a chamou.
  • Erros: Uma lista dos valores que podem ser atribuídos a errno em caso de erro.
  • Ambiente: Uma lista das variáveis de ambiente que afetam o comando ou programa e de que forma.
  • Arquivos: Uma lista dos arquivos que o comando ou programa usa, como arquivos de configuração.
  • Atributos: Um resumo de vários atributos do comando.
  • Versões: Detalhes do kernel Linux ou versões de biblioteca onde uma função do sistema ou da biblioteca apareceu pela primeira vez, ou sofreu alterações significativas em relação às versões anteriores.
  • Em conformidade com: Uma descrição de quaisquer padrões com os quais o comando possa estar em conformidade, como POSIX.
  • Notas: Notas diversas.
  • Bugs: Problemas conhecidos.
  • Exemplos: Um ou mais exemplos que demonstram como o comando pode ser utilizado.
  • Autores: As pessoas que escreveram ou mantêm o comando.
  • Veja também: Leituras recomendadas relacionadas com o comando ou tópico.

As Secções do Manual

Se percorrer algumas páginas para baixo, encontrará uma lista das secções do manual.

As secções são as seguintes:

  • Comandos gerais: Comandos que são usados na linha de comandos.
  • Chamadas de sistema: Funções fornecidas pelo kernel que um programa pode chamar.
  • Funções de biblioteca: Funções que os programas podem chamar a partir de bibliotecas de código (principalmente a biblioteca padrão do C).
  • Arquivos especiais: Geralmente dispositivos, como aqueles encontrados em /dev, e os seus drivers.
  • Formatos de arquivo e convenções: Formatos para arquivos, como passwd, tabela cron e arquivos tar compactados.
  • Jogos: Descrições de comandos como fortune, que exibem citações de uma base de dados quando são executados.
  • Diversos: Descrições de itens como inodes, parâmetros de inicialização e o próprio man.
  • Administração do sistema: Comandos e daemons normalmente reservados para o utilizador root.
  • Rotinas do kernel: Informações relacionadas com o funcionamento interno do kernel. Isto inclui interfaces de funções e variáveis úteis para programadores que escrevem drivers de dispositivos, por exemplo. Na maioria dos sistemas, esta seção não é instalada.

Quando você vê um comando seguido por um número, isso se refere à descrição desse comando naquela seção específica do manual. Por exemplo, man (1) se refere à entrada na seção um do manual que descreve o comando man.

Na imagem acima, pode ver uma referência a man (7). Isso significa que existe mais informação sobre o man numa outra seção. Quando abrimos a página do manual pela primeira vez, ela exibiu man (1). Se digitar apenas man sem o número da seção, o man pesquisará todas as seções, em ordem, procurando uma entrada para o comando que digitou. Naturalmente, ele encontrou man (1) antes de man (7).

Se desejar forçar o man a encontrar uma entrada de uma seção específica, deverá incluir o número da seção na linha de comandos.

Por exemplo, digite o seguinte para abrir a entrada do man na seção sete:

man 7 man

O manual abre para a entrada do man na seção sete.

Esta página do manual fornece instruções sobre como escrever páginas de manual. Ela descreve o formato do ficheiro e as macros que pode usar para facilitar o trabalho. A página man (1) na seção um, que vimos anteriormente, descreveu como utilizar o próprio man.

Como Encontrar Entradas nas Seções

Geralmente, se apenas precisa saber como utilizar um comando, não precisa de indicar um número de seção. O man irá encontrar a entrada padrão, que descreve como utilizar esse comando na seção um do manual. No entanto, por vezes, precisará de abrir uma entrada de comando numa seção específica porque necessita de informações diferentes.

Pode descobrir facilmente quais as seções do manual que contêm entradas para um determinado comando. Cada página do manual tem um título e uma breve descrição. A opção -f (whatis) pesquisa os títulos das páginas e retorna uma lista de correspondências.

Para este exemplo, digite o seguinte:

man -f man

As duas páginas de manual para o man são listadas, juntamente com os seus números de seção e descrições resumidas. No entanto, tenha cuidado – algumas entradas têm o mesmo nome, mas descrevem comandos e funções diferentes.

Por exemplo, digite o seguinte:

man -f printf

Parece que foram encontradas duas entradas para o printf: uma na seção um e outra na seção três. No entanto, estes são comandos diferentes. A página do manual na seção um descreve o comando printf da linha de comandos, que formata a saída na janela do terminal. A página do manual na seção três descreve a família de funções de biblioteca printf na linguagem de programação C.

Também é possível pesquisar as descrições resumidas, bem como os títulos das páginas. Para fazer isso, utilize a opção -k (apropos). Esta opção também irá corresponder às ocorrências do termo de pesquisa dentro de outras palavras maiores.

Digite o seguinte:

man -k printf

Muitos destes comandos são descritos nas mesmas páginas de manual porque a sua funcionalidade principal é basicamente a mesma. A página do manual para o vprintf descreve a funcionalidade de 10 dos comandos listados na imagem acima.

Pode aproveitar esta funcionalidade para pesquisar informações relacionadas com o que está a tentar realizar, mesmo que não saiba o nome exato do comando que deseja usar.

Digamos que pretende alterar a senha de uma conta de utilizador. Podemos pesquisar qualquer comando que mencione “usuário” nos títulos ou descrições das páginas do manual. Podemos, em seguida, canalizá-lo através do grep para procurar entradas que contenham “senha”.

Para fazer isso, digite o seguinte:

man -k 'user ' | grep password

Como colocamos a palavra “user” entre aspas simples e incluímos um espaço no final, ele só encontrará correspondências para “user”, não “users”. Uma rápida análise dos resultados da pesquisa mostra-nos que o candidato provável é passwd.

Como esta é uma página de manual da seção um e não precisamos de incluir o número da seção no comando, digite o seguinte:

man passwd

Suponha que precisa de um comando que conte o número de palavras num arquivo de texto. Digite o seguinte para ver se algo do género existe:

man -k word | grep count

Para descobrir tudo o que há para saber sobre a contagem de palavras, digite este comando:

man wc

Por falar em wc, também podemos utilizar a opção -k (apropos) com um único ponto (.) como alvo de pesquisa, o que irá corresponder a tudo. Se canalizarmos isto através do wc e utilizarmos a opção -l (linhas), será exibido o número de páginas de manual existentes no seu computador.

Para executar tudo isto, digite o seguinte comando:

man -k . | wc -l

Existem 6.706 páginas de manual neste computador Ubuntu, mas não se surpreenda se o número for diferente no seu. O número pode variar dependendo dos pacotes de software e utilitários que tem instalado na sua máquina e das páginas de manual que foram pré-instaladas.

Pesquisando Dentro de uma Página do Manual

Também pode pesquisar para a frente ou para trás, a partir da sua posição atual, dentro de uma página do manual.

Para este exemplo, digite o seguinte para abrir a página de manual do comando history:

man history

Para pesquisar para a frente, pressione a barra (/) e, em seguida, digite a palavra “evento”. O destino da pesquisa aparece na parte inferior da janela do terminal e pressione Enter para iniciar a pesquisa.

A janela exibe o primeiro resultado entre todos os resultados encontrados, que são realçados.

Pressione “n” para se mover de um resultado para outro em direção ao final da página. Para pesquisar para trás na página do manual, pressione “N”; isso levá-lo-á de volta para o início da página.

Para ativar e desativar o realce, pressione Esc + U.

Se estiver perto do final da página do manual e quiser pesquisar para cima, pressione o ponto de interrogação (?) e digite o termo de pesquisa. Pesquisamos por “entrada”.

Novamente, todos os resultados correspondentes serão realçados.

Para pesquisar o próximo resultado correspondente, pressione “n” para se mover em direção ao início da página do manual. Pressione “N” para ir para o resultado correspondente anterior e mover em direção ao final da página do manual.

Existe outra forma de pesquisar uma página do manual. Esta opção oculta todas as linhas que não correspondem ao seu termo de pesquisa, por isso, é melhor usar os números das linhas com esta técnica.

Se digitar -N e pressionar Enter, poderá visualizar os números das linhas na página do manual.

Pressione o “e” comercial (&), digite o termo de pesquisa (número) e, em seguida, pressione Enter.

Apenas as linhas que contêm o seu termo de pesquisa são exibidas.

É fácil analisá-las e localizar qualquer uma que pareça interessante. Achamos que a linha 292 parece promissora, por isso, queremos ir para essa seção da página do manual para ver do que se trata.

Para ver todas as linhas novamente, clique no “e” comercial (&) e, em seguida, pressione Enter.

Digite “292” e “g” para ir para essa linha.

Assim que digitar “g”, será direcionado para a linha 292 (é por isso que o “g” não aparece na imagem acima). A linha 292 é então exibida na parte superior da janela do terminal.

Pode pressionar “-n” e pressionar Enter para remover os números das linhas.

Explore o Fascinante Manual

As páginas do manual contêm uma grande quantidade de informações. Mesmo com comandos que pensa que conhece bem, pode apostar que existem outras opções que nunca ouviu falar.

Também encontrará, sem dúvida, comandos que nem sabia que existiam. Com tantas formas diferentes de pesquisar e rastrear informação, é incrível ter tudo ao seu alcance.