Alura > Cursos de DevOps > Cursos de Linux > Conteúdos de Linux > Primeiras aulas do curso Certificação Linux LPI Essentials: Command Line Basics

Certificação Linux LPI Essentials: Command Line Basics

Como localizar arquivos - Apresentação

Chegou a hora de começar a parte 3 do nosso curso de LPI Essentials. Sou Ricardo Merces e vou acompanhar você durante as aulas.

Audiodescrição: Ricardo Merces é uma pessoa de pele clara, com rosto arredondado e olhos escuros. É careca, usa uma camiseta cinza e está sentado em uma cadeira preta. Ao fundo, parede azul.

Lembre-se que esses são cursos iniciais da formação LPI, como discutimos ao longo das aulas.

O que vamos aprender?

Neste módulo 3, vamos conhecer uma parte bastante relevante, que é a navegação.

Navegação no sistema significa conseguir percorrer diretórios, mover e copiar arquivos, além de fazer localização e muito mais. Por exemplo, como procurar um arquivo dentro da árvore do sistema.

Dica: Se ficou algum assunto pendente, retorne ao módulo 1 ou 2, para que possamos avançar juntos.

Como localizar arquivos - Comando locate

Dentro da proposta de navegar no sistema, algo que as pessoas geralmente querem saber rapidamente é:

Como encontrar arquivos no sistema?

Adiante, vamos conhecer em detalhes a hierarquia da estrutura de diretórios e arquivos. Mas, antes disso, vamos responder a essa pergunta inicial.

Comando locate

Para localizar arquivos, podemos usar comando locate no terminal.

locate

Arquivo ou diretório inexistente

Primeiro, precisamos instalá-lo na máquina. Como podemos instalar um pacote? Você se lembra das primeiras aulas?

Com o comando sudo apt update podemos fazer o sync (sincronização) entre os repositórios. Assim, vamos ter a referência atualizada do que está no repo (repositório) Ubuntu na base local.

sudo apt update

Uma vez feita essa atualização de referência da base, agora, sim, podemos escrever sudo para ter os privilégios para instalar o comando apt install que permitirá instalar o locate.

sudo apt install locate

Esse monte de pacotes listados são as dependências necessárias para a aplicação funcionar.

Feita a instalação, podemos digitar locate:

locate

locate: pattern argument expected

É preciso passar argumentos para serem localizados.

Vamos localizar o comando ping que ainda não conhecemos. Podemos usá-lo para testar a nossa conectividade de rede com o DNS do Google, por exemplo.

ping 8.8.8.8

64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=5.90 ms

[...]

Vamos usar o atalho "Ctrl + C" para parar esse comando.

Onde fica o comando, o binário, ou o executável ping? Para isso, usamos o locate ping.

locate ping

Não houve nenhum retorno. Por quê? O locate não localiza os arquivos?

O locate trabalha com banco de dados e vai criar a referência de tudo que temos no sistema. Essa é uma das razões pelas quais o instrutor Ricardo não o utiliza muito, pois é preciso ficar fazendo o update (atualização) do banco de dados.

Como fazemos essa atualização? Vamos executar o seguinte comando:

sudo updatedb

Deu algumas permissões negadas no find, mas não se preocupe com isso.

Vamos repetir o locate ping e repare como teremos um retorno na tela. Muitas informações na tela.

Quando escrevemos locate e o comando que queremos localizar (nesse caso, o ping), ele vai procurar por todos os arquivos que têm a palavra ping.

/usr/src/linux-hwe-5.19-headers-5.19.0-46/include/linux/dma-mapping.h

Ele vai varrer todo o sistema. Por exemplo, você pode notar que tem ping em dma.mapping. Ele encontrou essa palavra em vários lugares diferentes no sistema.

Ele também encontrou o executável do ping:

/usr/bin/ping

É interessante ficar atento à questão das árvores de diretório, onde ficam os arquivos.

Os binários, ou seja, os executáveis, geralmente estão em usr/bin. Podem estar em outro lugar? Sim, mas por convenção ficam nesse local.

Agora, no terminal, vamos escrever o comando ls que mostra o conteúdo do diretório local.

ls

O que vamos fazer? Vamos criar um arquivo a1.txt.

touch a1.txt

Vamos supor que não lembramos onde está esse arquivo. Não sabemos onde o criamos no sistema. Como prosseguir? Vamos localizá-lo:

locate a1.txt

/usr/lib/firmware/brcm/brcmfmac43430-sdio.beagle,beaglev-starlight-jh7100-a1.txt

Que interessante, ele encontrou um arquivo jh7100-a1.txt. Na verdade, nem sabíamos que isso existia.

Mas, ele não mostrou o a1.txt que acabamos de criar. Por quê? Precisamos sempre fazer a atualização da base de dados.

Para isso, vamos repetir aquele comando sudo updatedb.

sudo updatedb

Com isso, vamos fazer as atualizações e a partir daí, podemos localizar o arquivo que criamos. Vamos limpar a tela com o comando clear para facilitar a visualização.

locate a1.txt

/home/ricardo/a1.txt

Se repetimos o comando para criar um a2.txt, ele vai estar em /home/ricardo. Mas, se mandamos localizar com locate, não será encontrado porque o database (banco de dados) não foi atualizado.

Conclusão

A ideia é sempre apresentar novos comandos, pois é importante que você saiba que eles existem.

Porém, vamos te apresentar uma ferramenta que consideramos superior ao locate, que é frequentemente utilizada no dia a dia. Mas, pratique o locate, principalmente se estiver interessado em fazer a prova de certificação.

No próximo vídeo, localizaremos arquivos sem precisar atualizar o database a cada nova entrada que geramos no sistema.

Como localizar arquivos - Comando find

Outro comando muito comum é o find, como mencionado anteriormente.

Qual a diferença entre find e locate? O find é ótimo, pois não precisamos atualizar continuamente o banco de dados. Mas a pesquisa é muito mais rápida quando usamos o locate, já que usa um database.

Podemos testar, vamos escrever locate e o comando para desligar poweroff.

locate poweroff

Dessa forma, quando você digita locate para procurar algo no banco, o output (saída) é muito mais rápido, pois já está tudo indexado.

Diferentemente do locate, o find vai fazer essa busca a cada "Enter" que você pressionar. Ou seja, a cada pesquisa realizada, ele vai escanear aquele local ou o sistema todo, dependendo de como você vai interagir com ele.

Comando find

Dentro do diretório etc, existe um arquivo que é um database dos usuários que são criados localmente no Linux. Este database é chamado passwd, onde estão listados o nome dos usuários, qual o home que ele vai usar, qual o Shell e alguns outros detalhes.

Vamos supor que estamos procurando esse arquivo passwd e que não sabemos que ele está no etc. Como vamos buscá-lo usando o find?

Digitamos find e onde queremos procurar. Primeiro, vamos colocar uma barra, porque é o topo da nossa árvore de diretórios.

Em seguida, vamos passar o -name, que especifica o tipo de busca que realizamos dentro do find. Nesse caso, o que estamos procurando por nome? O arquivo passwd. Vamos pressionar "Enter" e conferir o que acontece.

find / -name passwd

Aparecem muitas permissões negadas. Mais adiante no curso, vamos estudar sobre permissões. Entre essas saídas, aparece o passwd:

/usr/bin/passwd

Você pode digitá-lo, ele serve para trocar a senha. Também existe um arquivo /etc/passwd:

/etc/passwd

Dois arquivos com esse mesmo nome, mas em diretórios diferentes. O que estávamos procurando era o arquivo dentro de etc.

Mas, o que essas mensagens de "permissão negada" significam? Como já aprendemos, nós estamos realizando a busca com um usuário não privilegiado. Nessa caso, o Ricardo.

Como não é um usuário com os devidos privilégios, o que vai acontecer? Existem diretórios que não vamos conseguir acessar por questões de segurança.

Portanto, todos os diretórios que eu não puder acessar, vão aparecer como "permissão negada". Essa saída é normal, considerando a permissão que temos.

Agora, vamos repetir o comando, usando a seta para cima.

As setas para baixo e para cima servem para navegar entre os comandos executados.

Isto é uma função do Shell. Qual Shell estamos usando? O Bash, como aprendemos anteriormente. No começo do comando, vamos adicionar o sudo para executá-lo de forma privilegiada.

sudo find / -name passwd

Ele começou a percorrer o sistema todo, procurando por passwd. As mensagens já foram diferentes, mas ainda temos o /etc/passwd e também o binário.

Mas, se sempre procurarmos a partir da barra, a busca poderia demorar bastante em um sistema com muitos arquivos. Afinal, o comando vai vasculhar todos os diretórios e subdiretórios.

Como resolvemos isso? Podemos passar o caminho (path) onde desejamos iniciar a busca. Isso poupa bastante tempo.

Por exemplo, a partir do /etc, ele realizará a busca a partir do diretório /etc em diante. Ao executar essa opção, o tempo de resposta é muito mais rápido.

sudo find /etc -name passwd

/etc/passwd

/etc/pam.d/passwd

Todos os arquivos que contêm passwd a partir do diretório /etc foram listados.

Adiantando algo que aprenderemos mais detalhadamente no futuro: tanto o comando find quanto o comando locate aceitam caracteres especiais.

Por exemplo, pass* significa que será localizada qualquer arquivo que comece com a string "pass", onde o asterisco representa qualquer conjunto de caracteres de qualquer tamanho.

sudo find /etc -name pass*

/etc/passwd

/etc/passwd-

/etc/pam.d/passwd

O comando retorna todos os arquivos que iniciam com "pass". Inclusive, retorna passwd- que é um arquivo diferente.

Em breve, detalharemos mais sobre esses coringas e esses caracteres especiais. O asterisco é um dos mais comuns, independentemente da distribuição Linux que você esteja utilizando.

Portanto, aprendemos bastante apenas com estas poucas interações. Mas, não é só isso! O find também tem outros parâmetros bem interessantes que exploraremos no próximo vídeo.

Sobre o curso Certificação Linux LPI Essentials: Command Line Basics

O curso Certificação Linux LPI Essentials: Command Line Basics possui 101 minutos de vídeos, em um total de 23 atividades. Gostou? Conheça nossos outros cursos de Linux em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Linux acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas