2.2 Lição 1
Certificação: |
Linux Essentials |
---|---|
Versão: |
1.6 |
Tópico: |
2 Como se orientar em um sistema Linux |
Objetivo: |
2.2 Como obter ajuda na linha de comando |
Lição: |
1 de 1 |
Introdução
A linha de comando é uma ferramenta bastante complexa. Cada comando possui suas próprias opções únicas; por isso, é essencial conhecer a documentação ao se trabalhar com um sistema Linux. Além do diretório /usr/share/doc/
, que armazena a maior parte da documentação, diversas outras ferramentas fornecem informações sobre o uso dos comandos do Linux. Este capítulo se concentra em métodos para acessar essa documentação, com o objetivo de obter ajuda.
Existem vários métodos para obter ajuda na linha de comando do Linux. Alguns exemplos são man
, help
e info
. Para o Linux Essentials, focaremos em man
e info
, que são as ferramentas mais usadas para obter ajuda.
Outro tópico deste capítulo será a localização de arquivos. Trabalharemos principalmente com o comando locate
.
Como obter ajuda na linha de comando
Ajuda interna
Quando são iniciados com o parâmetro --help
, a maioria dos comandos exibe algumas breves instruções sobre seu uso. Embora nem todos os comandos ofereçam essa opção, ainda vale a pena experimentá-la na primeira vez que se usa o comando para aprender mais sobre os parâmetros dele. Esteja ciente de que as instruções de --help
geralmente são bastante concisas em comparação com outras fontes de documentação que discutiremos nesta lição.
Páginas man
A maioria dos comandos inclui uma página de manual, ou página “man”. Essa documentação geralmente é instalada com o software e pode ser acessada com o comando man
. O comando cuja página de manual deve ser exibida é adicionado a man
na forma de argumento:
$ man mkdir
Esse comando abre a página man de mkdir
. Use as setas direcionais ou a barra de espaço para navegar pela página do manual. Para sair da página man, pressione Q.
Cada página man é dividida em no máximo 11 seções, embora muitas delas sejam opcionais:
Seção | Descrição |
---|---|
NAME |
Nome do comando e breve descrição |
SYNOPSIS |
Descrição da sintaxe do comando |
DESCRIPTION |
Descrição dos efeitos do comando |
OPTIONS |
Opções disponíveis |
ARGUMENTS |
Argumentos disponíveis |
FILES |
Arquivos auxiliares |
EXAMPLES |
Uma amostra da linha de comando |
SEE ALSO |
Referências cruzadas aos tópicos relacionados |
DIAGNOSTICS |
Mensagens de Advertência e Erro |
COPYRIGHT |
Autor(es) do comando |
BUGS |
Limitações conhecidas do comando |
Na prática, a maioria das páginas de manual não contém todas essas partes.
As páginas man estão organizadas em oito categorias, numeradas de 1 a 8:
Categoria | Descrição |
---|---|
1 |
Comando do usuário |
2 |
Chamadas do sistema |
3 |
Funções da biblioteca C |
4 |
Drivers e arquivos de dispositivo |
5 |
Arquivos de configuração e formatos de arquivo |
6 |
Jogos |
7 |
Miscelânea |
8 |
Comandos do administrador do sistema |
9 |
Funções do kernel (não padrão) |
Cada página de manual pertence a exatamente uma seção. No entanto, seções diferentes podem conter páginas de manual com o mesmo nome. Vejamos, por exemplo, o comando passwd
. Esse comando pode ser usado para alterar a senha de um usuário. Como passwd
é um comando do usuário, sua página de manual reside na seção 1. Além do comando passwd
, o arquivo de banco de dados de senhas /etc/passwd
também possui uma página de manual chamada passwd
. Como neste caso se trata de um arquivo de configuração, ele pertence à seção 5. Nas referências a uma página de manual, a categoria é frequentemente adicionada ao nome da página, por exemplo passwd(1)
ou passwd(5)
, para identificar a página respectiva.
Por padrão, man passwd
exibe a primeira página man disponível; neste caso, passwd(1)
. A categoria da página man desejada pode ser especificada em um comando como man 1 passwd
ou man 5 passwd
.
Já explicamos como navegar por uma página man e como retornar à linha de comando. Internamente, o man
usa o comando less
para exibir o conteúdo da página. less
permite procurar texto dentro de uma página man. Para procurar a palavra linux
, podemos simplesmente digitar /linux
para pesquisar a partir do ponto em que estamos na página, ou ?Linux
para iniciar uma pesquisa reversa. Esta ação destaca todos os resultados correspondentes e move a página para a primeira correspondência destacada. Nos dois casos, basta digitar N para pular até a correspondência seguinte. Para encontrar mais informações sobre esses recursos adicionais, pressione H; será exibido um menu com todas as informações.
Páginas info
Outra ferramenta muito útil ao trabalhar com o sistema Linux são as páginas de informações, ou info. As páginas info geralmente são mais detalhadas que as páginas man e são formatadas em hipertexto, semelhantes às páginas web na internet.
Para exibir as páginas info, usamos:
$ info mkdir
Nessas páginas, o comando info
lê um arquivo de informações estruturado em nós individuais dentro de uma árvore. Cada nó contém um tópico simples e o comando info
inclui hiperlinks que ajudam a passar de um para o outro. Para acessar o link, pressione Enter, com o cursor pousado sobre um dos asteriscos principais.
A exemplo de man
, a ferramenta info
também inclui comandos de navegação na página. Para descobrir mais sobre esses comandos, pressione ? enquanto estiver na página de informações. Essas ferramentas o ajudarão a navegar na página mais facilmente e a entender como acessar os nós e mover-se dentro da árvore de nós.
O diretório /usr/share/doc/
Como já mencionado, o diretório /usr/share/doc/
armazena a maior parte da documentação dos comandos que estão em uso. Essa pasta contém um diretório para a maioria dos pacotes instalados no sistema. O nome do diretório geralmente é o nome do pacote e, ocasionalmente, a versão. Esses diretórios incluem um arquivo README
ou readme.txt
contendo a documentação básica do pacote. Juntamente com o arquivo README
, a pasta também pode conter outros arquivos de documentação, como o registro de alterações (changelog), que inclui o histórico do programa em detalhes, ou exemplos de arquivos de configuração para aquele pacote específico.
As informações contidas no arquivo README
variam de um pacote a outro. Todos os arquivos são gravados em texto simples e, portanto, podem ser lidos em qualquer editor de texto de sua preferência. O número exato e os tipos de arquivos dependem do pacote. Verifique alguns dos diretórios para obter uma visão geral de seu conteúdo.
Como localizar arquivos
O comando locate
Um sistema Linux é construído a partir de diversos diretórios e arquivos. O Linux tem muitas ferramentas que permitem localizar um arquivo específico em um sistema. A mais rápida é o comando locate
.
O locate
pesquisa dentro de um banco de dados e, em seguida, gera todos os nomes que correspondem à cadeia de caracteres (string) especificada:
$ locate note /lib/udev/keymaps/zepto-znote /usr/bin/zipnote /usr/share/doc/initramfs-tools/maintainer-notes.html /usr/share/man/man1/zipnote.1.gz
O comando locate
também suporta o uso de curingas e expressões regulares; assim, o termo de pesquisa não precisa corresponder ao nome inteiro do arquivo desejado. Trataremos mais a fundo das expressões regulares em um capítulo posterior.
Por padrão, locate
se comporta como se o termo de busca estivesse cercado por asteriscos. Portanto, locate TERMO
é o mesmo que locate *TERMO*
. Isso permite fornecer apenas substrings em vez do nome exato do arquivo. Se quiser modificar esse comportamento, use as diferentes opções especificadas na página man de locate
.
Como locate
consulta um banco de dados, você pode não encontrar um arquivo que foi criado recentemente. O banco de dados é gerenciado por um programa chamado updatedb
. Ele costuma ser executado periodicamente, mas se você possui privilégios de root e precisa atualizar o banco de dados imediatamente, pode executar o comando updatedb
a qualquer momento.
O comando find
O find
é outra ferramenta muito popular usada para procurar arquivos. Esse comando tem uma abordagem diferente do locate
. O comando find
pesquisa recursivamente em uma árvore de diretórios, incluindo os subdiretórios. O find
faz essa pesquisa a cada chamada, em vez de manter um banco de dados como o locate
. A exemplo do locate
, o find
também suporta caracteres curinga e expressões regulares.
O find
requer pelo menos o local em que ele deve procurar. Além disso, podemos adicionar expressões para filtrar os arquivos a exibir. Um exemplo é a expressão -name
, que procura por arquivos com um nome específico:
~$ cd Downloads ~/Downloads $ find . -name thesis.pdf ./thesis.pdf ~/Downloads $ find ~ -name thesis.pdf /home/carol/Downloads/thesis.pdf
O primeiro comando find
procura por arquivos dentro do atual diretório Downloads
, ao passo que o segundo busca pelo arquivo no diretório Home do usuário.
O comando find
é muito complexo e, portanto, não será tratado no exame Linux Essentials. No entanto, trata-se de uma ferramenta poderosa e particularmente útil no cotidiano.
Exercícios Guiados
-
Use o comando
man
para descobrir o que cada comando faz:Comando Descrição ls
Exibe o conteúdo de um diretório.
cat
cut
cd
cp
mv
mkdir
touch
wc
passwd
rm
rmdir
more
less
whereis
head
tail
sort
tr
chmod
grep
-
Abra a página info de
ls
e identifique o MENU.-
Quais são as opções?
-
Encontre a opção que permite classificar os dados de saída por data de modificação.
-
-
Exiba o caminho para os três primeiros arquivos
README
. Use o comandoman
para identificar a opção correta paralocate
. -
Crie um arquivo chamado
test
em seu diretório Home. Encontre seu caminho absoluto usando o comandolocate
. -
Você o encontrou imediatamente? O que teve de fazer para que
locate
o encontrasse? -
Procure pelo arquivo de teste criado anteriormente usando o comando
find
. Qual sintaxe você usou e qual o caminho absoluto?
Exercícios Exploratórios
-
Um dos comandos na tabela acima não tem uma página
man
. Qual é esse comando e por que você acha que ele não tem uma página man? -
Usando os comandos da tabela acima, crie a seguinte árvore de arquivos. Os nomes que começam com letra maiúscula são diretórios e os que começam em minúscula são arquivos.
User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test
-
Exiba na tela o diretório de trabalho atual, incluindo as subpastas.
-
Procure dentro da árvore por todos os arquivos terminados com um número.
-
Remova a árvore de diretórios inteira com um único comando.
Resumo
Nesta lição, você aprendeu:
-
Como conseguir ajuda
-
Como usar o comando
man
-
Como navegar na página
man
-
Diferentes seções da página
man
-
Como usar o comando
info
-
Como navegar entre diferentes nós
-
Como buscar arquivos dentro do sistema
Comandos usados nos exercícios:
man
-
Exibe uma página de manual.
info
-
Exibe uma página de informações.
locate
-
Busca no banco de dados de
locate
por arquivos com um nome específico. find
-
Busca no sistema de arquivos por nomes que correspondam a uma série de critérios de seleção.
updatedb
-
Atualiza o banco de dados de
locate
.
Respostas aos Exercícios Guiados
-
Use o comando
man
para descobrir o que cada comando faz:Comando Descrição ls
Exibe o conteúdo de um diretório.
cat
Concatena ou visualiza arquivos de texto
cut
Remove seções de um arquivo de texto
cd
Passa para um diretório diferente
cp
Copia um arquivo
mv
Move um arquivo (também pode ser usado para renomear)
mkdir
Cria um novo diretório
touch
Cria um arquivo ou modifica a hora e data da última modificação de um arquivo existente
wc
Conta o número de palavras, linhas ou bytes de um arquivo
passwd
Muda a senha de um usuário
rm
Remove um arquivo
rmdir
Remove um diretório
more
Visualiza arquivos de texto uma tela de cada vez
less
Visualiza arquivos de texto, permite rolar uma linha ou página por vez, para cima ou para baixo
whereis
Exibe o caminho até um programa especificado e arquivos de manual relacionados
head
Exibe as primeiras linhas de um arquivo
tail
Exibe as últimas linhas de um arquivo
sort
Ordena um arquivo numérica ou alfabeticamente
tr
Traduz ou remove caracteres de um arquivo
chmod
Altera as permissões de um arquivo
grep
Busca dentro de um arquivo
-
Abra a página info de
ls
e identifique o MENU.*-
Quais são as opções?
-
Quais arquivos são listados
-
Qual informação é listada
-
Classificação do resultado
-
Informações sobre a versão
-
Formatação geral da saída
-
Formatação dos registros de data e hora do arquivo
-
Formatação dos nomes dos arquivos
-
-
Encontre a opção que permite classificar os dados de saída por data de modificação.
-t
ou--sort=time
-
-
Exiba o caminho para os três primeiros arquivos
README
. Use o comandoman
para identificar a opção correta paralocate
.$ locate -l 3 README /etc/alternatives/README /etc/init.d/README /etc/rc0.d/README
-
Crie um arquivo chamado
test
em seu diretório Home. Encontre seu caminho absoluto usando o comandolocate
.$ touch test $ locate test /home/user/test
-
Você o encontrou imediatamente? O que teve de fazer para que
locate
o encontrasse?$ sudo updatedb
O arquivo acaba de ser criado, portanto ainda não foi registrado no banco de dados.
-
Procure pelo arquivo de teste criado anteriormente usando o comando
find
. Qual sintaxe você usou e qual o caminho absoluto?$ find ~ -name test
ou
$ find . -name test /home/user/test
Respostas aos Exercícios Exploratórios
-
Um dos comandos na tabela acima não tem uma página
man
. Qual é esse comando e por que você acha que ele não tem uma página man?O comando
cd
. Ele não tem uma página man porque é um comando interno do shell. -
Usando os comandos da tabela acima, crie a seguinte árvore de arquivos. Os nomes que começam com letra maiúscula são diretórios e os que começam em minúscula são arquivos.
User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test
A solução é uma combinação dos comandos
mkdir
etouch
. -
Exiba na tela o diretório de trabalho atual, incluindo as subpastas.
$ ls -R
-
Procure dentro da árvore por todos os arquivos terminados com um número.
$ find ~ -name "*[0-9]" $ locate "*[0-9]"
-
Remova a árvore de diretórios inteira com um único comando.
$ rm -r Documents Downloads Test test