Linux Professional Institute Learning Logo.
Ir para o conteúdo principal
  • Home
    • Todos os recursos
    • LPI Materiais Didáticos
    • Colabore Conosco
    • Publishing Partners
    • Seja um Publishing Partner
    • Quem Somos
    • FAQ
    • Colaboradores
    • Contato
  • LPI.org
2.3 Lição 2
Tópico 1: A comunidade Linux e a carreira Open Source
1.1 A evolução do Linux e sistemas operacionais populares
  • 1.1 Lição 1
1.2 Principais Aplicações Open Source
  • 1.2 Lição 1
1.3 Entendendo o Software Open Source e suas Licenças
  • 1.3 Lição 1
1.4 Habilidades ICT e trabalhando no Linux
  • 1.4 Lição 1
Tópico 2: Encontrando seu caminho em um Sistema Linux
2.1 O básico sobre a linha de comando
  • 2.1 Lição 1
  • 2.1 Lição 2
2.2 Usando a linha de comando para conseguir ajuda
  • 2.2 Lição 1
2.3 Usando diretórios e listando arquivos
  • 2.3 Lição 1
  • 2.3 Lição 2
2.4 Criando, Movendo e Deletando Arquivos
  • 2.4 Lição 1
Tópico 3: O Poder da Linha de Comando
3.1 Empacotando arquivos na linha de comando
  • 3.1 Lição 1
3.2 Pesquisando e extraindo dados de arquivos
  • 3.2 Lição 1
  • 3.2 Lição 2
3.3 Transformando comandos em Scripts
  • 3.3 Lição 1
  • 3.3 Lição 2
Tópico 4: O Sistema Operacional Linux
4.1 Escolhendo um Sistema Operacional
  • 4.1 Lição 1
4.2 Entendendo o Hardware do Computador
  • 4.2 Lição 1
4.3 Onde os dados são armazenados
  • 4.3 Lição 1
  • 4.3 Lição 2
4.4 Seu Computador na Rede
  • 4.4 Lição 1
Tópico 5: Segurança e Permissões de Arquivos
5.1 Segurança Básica e Identificação de Tipos de Usuários
  • 5.1 Lição 1
5.2 Criando Usuários e Grupos
  • 5.2 Lição 1
5.3 Gerenciando permissões e donos de arquivos
  • 5.3 Lição 1
5.4 Diretórios e arquivos especiais
  • 5.4 Lição 1
How to get certified
  1. Tópico 2: Encontrando seu caminho em um Sistema Linux
  2. 2.3 Usando diretórios e listando arquivos
  3. 2.3 Lição 2

2.3 Lição 2

Certificação:

Linux Essentials

Versão:

1.6

Tópico:

2 Como se orientar em um sistema Linux

Objetivo:

2.3 Como usar diretórios e listar arquivos

Lição:

2 de 2

Introdução

O sistema operacional Unix foi originalmente projetado para computadores mainframe em meados da década de 1960. Esses computadores eram compartilhados entre muitos usuários, que acessavam os recursos do sistema através de terminais. Essas idéias fundamentais ainda estão presentes nos sistemas Linux de hoje em dia. Ainda falamos sobre o uso de “terminais” para inserir comandos no shell, e os sistemas Linux são organizados de tal maneira que é fácil criar diversos usuários em um único sistema.

Diretórios Home

Eis um exemplo de um sistema de arquivos normal no Linux:

$ tree -L 1 /
/
├── bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var

A maioria desses diretórios existe em todos os sistemas Linux. De servidores a supercomputadores, passando por pequenos sistemas embarcados, um usuário experiente do Linux pode ter a certeza de que vai encontrar o comando ls dentro de /bin, que pode alterar a configuração do sistema modificando arquivos em /etc e ler os logs do sistema em /var. A localização padrão desses arquivos e diretórios é definida pelo FHS (Filesystem Hierarchy Standard, ou padrão de sistema de arquivos hierárquico), que será discutido em uma lição mais pra frente. Você aprenderá mais sobre o conteúdo desses diretórios à medida que continuar estudando o Linux, mas por enquanto, é importante saber que:

  • as alterações feitas no sistema de arquivos raiz (root) afetarão todos os usuários, e

  • alterar arquivos no sistema de arquivos raiz exigirá permissões de administrador.

Isso significa que os usuários normais não terão a permissão para alterar esses arquivos, e talvez nem mesmo para a leitura deles. Abordaremos o tópico das permissões em uma seção posterior.

Agora, vamos nos concentrar no diretório /home, que você já deve conhecer bem:

$ tree -L 1 /home
/home
├── user
├── michael
└── lara

Nosso sistema de exemplo tem três usuários normais e cada um deles tem acesso a seu próprio local dedicado, no qual é possível criar e modificar arquivos e diretórios sem afetar o vizinho. Por exemplo, na lição anterior, estávamos trabalhando com a seguinte estrutura de arquivos:

$ tree /home/user
user
└── Documents
    ├── Mission-Statement
    └── Reports
        └── report2018.txt

Na realidade, o sistema de arquivos pode ser assim:

$ tree /home
/home
├── user
│   └── Documents
│       ├── Mission-Statement
│       └── Reports
│           └── report2018.txt
├── michael
│   ├── Documents
│   │   └── presentation-for-clients.odp
│   └── Music

…​e assim por diante para lara.

No Linux, /home é semelhante a um prédio de apartamentos. Muitos usuários podem ter seu espaço aqui, separados em apartamentos dedicados. As instalações básicas e a manutenção do próprio edifício são de responsabilidade do usuário root, que representa o síndico.

O caminho relativo especial para home

Ao iniciar uma nova sessão no terminal do Linux, vemos um prompt de comando semelhante a este:

user@hostname ~ $

O til (~) representa, aqui, o diretório home. Se executarmos o comando ls, veremos um resultado conhecido:

$ cd ~
$ ls
Documents

Compare-o ao sistema de arquivos acima para entender melhor.

Considere agora o que sabemos sobre o Linux: ele é semelhante a um prédio de apartamentos, com muitos usuários residentes em /home. Portanto, a casa de user será diferente da casa do usuário michael. Para demonstrar isso, usaremos o comando su para trocar de usuário.

user@hostname ~ $ pwd
/home/user
user@hostname ~ $ su - michael
Password:
michael@hostname ~ $ pwd
/home/michael

O significado de ~ muda dependendo de quem for o usuário. Para michael, o caminho absoluto de ~ é /home/michael. Para lara, o caminho absoluto de ~ é /home/lara, e assim por diante.

Caminhos de arquivos relativos-a-home

A possibilidade de usar ~ para os comandos é muito conveniente, desde que você não troque de usuário. Vamos considerar o exemplo a seguir para user, que iniciou uma nova sessão:

$ ls
Documents
$ cd Documents
$ ls
Mission-Statement
Reports
$ cd Reports
$ ls
report2018.txt
$ cd ~
$ ls
Documents

Note que os usuários sempre iniciam uma nova sessão em seu diretório pessoal. Neste exemplo, user trocou para o subdiretório Documents/Reports e, com o comando cd ~, voltou ao ponto de partida. É possível executar a mesma ação usando o comando cd sem argumentos:

$ cd Documents/Reports
$ pwd
/home/user/Documents/Reports
$ cd
$ pwd
/home/user

E por fim: podemos especificar os diretórios pessoais de outros usuários especificando o nome de usuário após o til. Por exemplo:

$ ls ~michael
Documents
Music

Porém, isso só funciona se michael nos der permissão para visualizar o conteúdo de seu diretório pessoal.

Vamos considerar uma situação em que michael gostaria de visualizar o arquivo report2018.txt no diretório inicial de user. Supondo que michael tenha permissão para fazê-lo, ele pode usar o comando less.

$ less ~user/Documents/Reports/report2018.txt

Qualquer caminho de arquivo que contenha o caractere ~ é chamado de caminho relativo-a-home.

Arquivos e diretórios ocultos

Na lição anterior, introduzimos a opção -a para o comando ls. Usamos ls -a para introduzir os dois caminhos relativos especiais: . e ... A opção -a lista todos os arquivos e diretórios, incluindo os arquivos e diretórios ocultos.

$ ls -a ~
.
..
.bash_history
.bash_logout
.bash-profile
.bashrc
Documents

Os arquivos e diretórios ocultos sempre começam com um ponto (.). Por padrão, o diretório home de um usuário inclui diversos arquivos ocultos. Eles servem geralmente para estabelecer as configurações específicas do usuário e devem ser modificados somente por um usuário experiente.

A opção de lista longa

Existem muitas opções que permitem mudar o comportamento do comando ls. Vamos conhecer uma das mais comuns:

$ ls -l
-rw-r--r-- 1 user staff      3606 Jan 13  2017 report2018.txt

-l cria uma lista longa. Os arquivos e diretórios ocuparão uma linha cada, mas também serão exibidas informações adicionais sobre cada arquivo e diretório.

-rw-r—​r--

Tipo de arquivo e permissões do arquivo. Note que um arquivo regular começa com traço e um diretório começa com d.

1

Número de links para o arquivo.

user staff

Especifica a posse do arquivo. user é o proprietário do arquivo, o qual também está associado ao grupo staff.

3606

Tamanho do arquivo em bytes.

Jan 13 2017

Registro de data e hora da última modificação do arquivo.

report2018.txt

Nome do arquivo.

Temas como posse, permissões e links serão abordados em lições futuras. Como vemos, a versão em lista longa do ls é muitas vezes preferível à padrão.

Opções adicionais de ls

Eis algumas das maneiras mais comuns de se usar o comando ls. O usuário pode combinar várias opções para obter a saída desejada.

ls -lh

A combinação de lista longa com tamanhos de arquivo legíveis para humanos fornece sufixos úteis como M para megabytes ou K para quilobytes.

ls -d */

A opção -d lista os diretórios, mas não seu conteúdo. A combinação com */ mostra apenas os subdiretórios e nenhum arquivo.

ls -lt

Combina a lista longa com a opção de classificar por data de modificação. Os arquivos com as alterações mais recentes aparecem na parte superior e os arquivos com as alterações mais antigas, na parte inferior. Mas essa ordem pode ser invertida com:

ls -lrt

Combina a lista longa com classificar por data (de modificação), junto com -r, que inverte a classificação. Agora, os arquivos com as alterações mais recentes aparecem na parte inferior da lista. Além de classificar por data de modificação, os arquivos também podem ser classificados por data de acesso ou data de alteração de status.

ls -lX

Combina a lista longa com a opção de classificar por eXtensão de arquivo. Serve, por exemplo, para agrupar todos os arquivos que terminam com .txt, todos os arquivos que terminam com .jpg e assim por diante.

ls -S

O -S classifica por tamanho de arquivo, da mesma forma que -t e -X classificam por data e extensão, respectivamente. Os arquivos maiores aparecerão primeiro e os menores, por último. Observe que o conteúdo dos subdiretórios não está incluído na classificação.

ls -R

A opção -R modifica o comando ls para exibir uma lista recursiva. O que isso significa?

A recursão no Bash

A recursão (ou recursividade) é uma situação em que “algo é definido em termos de si mesmo”. A recursão é um conceito importantíssimo nas ciências da computação, mas aqui seu significado é bem mais simples. Vamos considerar nosso exemplo de antes:

$ ls ~
Documents

Já sabemos que user possui um diretório inicial (home) e que nesse diretório existe um subdiretório. Até agora, o ls nos mostrou apenas os arquivos e subdiretórios de um local, sem informar qual o conteúdo desses subdiretórios. Nestas lições, usamos o comando tree para exibir o conteúdo de vários diretórios. Infelizmente, o tree não é um dos utilitários integrantes do Linux e, portanto, nem sempre está disponível. Compare a saída de tree com a saída de ls -R nos seguintes exemplos:

$ tree /home/user
user
└── Documents
    ├── Mission-Statement
    └── Reports
        └── report2018.txt

$ ls -R ~
/home/user/:
Documents

/home/user/Documents:
Mission-Statement
Reports

/home/user/Documents/Reports:
report2018.txt

Como você pode ver, com a opção recursiva, temos uma lista muito maior de arquivos. Na verdade, é como se rodássemos o comando ls no diretório inicial de user e encontrássemos um subdiretório. Entramos então nesse subdiretório e executamos o comando ls novamente. Encontramos o arquivo Mission-Statement e outro subdiretório chamado Reports. E, novamente, entramos nesse subdiretório e executamos o comando ls outra vez. Basicamente, executar o comando ls -R é como dizer ao Bash: “Execute o ls aqui e repita o comando em todos os subdiretórios que encontrar”.

A recursividade é particularmente importante nos comandos de modificação de arquivos, como copiar ou remover diretórios. Por exemplo, se você quiser copiar o subdiretório Documents, precisará especificar uma cópia recursiva para estender esse comando a todos os subdiretórios.

Exercícios Guiados

  1. Use a estrutura de arquivos abaixo para responder às três questões a seguir:

    /
    ├── etc/
    │   ├── network/
    │   │   └── interfaces/
    │   ├── systemd/
    │   │   ├── resolved.conf
    │   │   ├── system/
    │   │   ├── system.conf
    │   │   ├── user/
    │   │   └── user.conf
    │   └── udev/
    │       ├── rules.d
    │       └── udev.conf
    └── home/
        ├── lost+found/
        ├── user/
        │   └── Documents/
        └── michael/
            └── Music/
    • Qual comando permite navegar até o diretório network independentemente de seu local atual?

    • Qual comando user poderia digitar para navegar até seu diretório Documents a partir de /etc/udev? Use o caminho mais curto possível.

    • Qual comando user poderia digitar para navegar até o diretório Music de michael? Use o caminho mais curto possível.

  2. Considere a seguinte saída de ls -lh para responder às duas questões a seguir. Note que os diretórios são indicados com um d no início da linha.

    drwxrwxrwx  5 eric eric  4.0K Apr 26  2011 China/
    -rwxrwxrwx  1 eric eric  1.5M Jul 18  2011 img_0066.jpg
    -rwxrwxrwx  1 eric eric  1.5M Jul 18  2011 img_0067.jpg
    -rwxrwxrwx  1 eric eric  1.6M Jul 18  2011 img_0074.jpg
    -rwxrwxrwx  1 eric eric  1.8M Jul 18  2011 img_0075.jpg
    -rwxrwxrwx  1 eric eric   46K Jul 18  2011 scary.jpg
    -rwxrwxrwx  1 eric eric  469K Jan 29  2018 Screenshot from 2017-08-13 21-22-24.png
    -rwxrwxrwx  1 eric eric  498K Jan 29  2018 Screenshot from 2017-08-14 21-18-07.png
    -rwxrwxrwx  1 eric eric  211K Jan 29  2018 Screenshot from 2018-01-06 23-29-30.png
    -rwxrwxrwx  1 eric eric  150K Jul 18  2011 tobermory.jpg
    drwxrwxrwx  6 eric eric  4.0K Apr 26  2011 Tokyo/
    -rwxrwxrwx  1 eric eric  1.4M Jul 18  2011 Toronto 081.jpg
    -rwxrwxrwx  1 eric eric  1.4M Jul 18  2011 Toronto 085.jpg
    -rwxrwxrwx  1 eric eric  944K Jul 18  2011 Toronto 152.jpg
    -rwxrwxrwx  1 eric eric  728K Jul 18  2011 Toronto 173.jpg
    drwxrwxrwx  2 eric eric  4.0K Jun  5  2016 Wallpapers/
    • Ao rodar o comando ls -lrS, qual arquivo aparecerá no início?

    • Descreva o que você espera ver como saída de ls -ad */.

Exercícios Exploratórios

  1. Rode o comando ls -lh num diretório que contenha subdiretórios. Observe o tamanho listado desses diretórios. Esses tamanhos de arquivo parecem corretos? Eles representam com precisão o conteúdo de todos os arquivos contidos naquele diretório?

  2. Eis um novo comando a experimentar: du -h. Rode esse comando e descreva a saída resultante.

  3. Em muitos sistemas Linux, podemos digitar ll e obter a mesma saída que teríamos com ls -l. Porém, note que ll não é um comando. Por exemplo, man ll exibirá a mensagem de que não existe uma página de manual para esse caso. Este é um exemplo de alias. Por que os aliases seriam úteis para um usuário?

Resumo

Nesta lição, você aprendeu:

  • que cada usuário do Linux tem um diretório home,

  • o diretório home do usuário atual pode ser acessado usando ~,

  • qualquer caminho de arquivo que use ~ é chamado de caminho relativo-a-home.

Você também aprendeu algumas das maneiras mais comuns de modificar o comando ls.

-a (all)

imprime todos os arquivos/diretórios, incluindo os ocultos

-d (directories)

lista os diretórios, mas não seu conteúdo

-h (human readable)

imprime o tamanho dos arquivos em formato legível para humanos

-l (long list)

fornece detalhes extras, um arquivo/diretório por linha

-r (reverse)

inverte a ordem de uma classificação

-R (recursive)

lista todos os arquivos, incluindo os que estão em cada subdiretório

-S (size)

classifica por tamanho de arquivo

-t (time)

classifica por data de modificação

-X (eXtension)

classifica por extensão de arquivo

Respostas aos Exercícios Guiados

  1. Use a estrutura de arquivos abaixo para responder às três questões a seguir:

    /
    ├── etc/
    │   ├── network/
    │   │   └── interfaces/
    │   ├── systemd/
    │   │   ├── resolved.conf
    │   │   ├── system/
    │   │   ├── system.conf
    │   │   ├── user/
    │   │   └── user.conf
    │   └── udev/
    │       ├── rules.d
    │       └── udev.conf
    └── home/
        ├── lost+found/
        ├── user/
        │   └── Documents/
        └── michael/
            └── Music/
    • Qual comando permite navegar até o diretório network independentemente de seu local atual?

      cd /etc/network
    • Qual comando user poderia digitar para navegar até seu diretório Documents a partir de /etc/udev? Use o caminho mais curto possível.

      cd ~/Documents
    • Qual comando user poderia digitar para navegar até o diretório Music de michael? Use o caminho mais curto possível.

      cd ~michael/Music
  2. Considere a seguinte saída de ls -lh para responder às duas questões a seguir. Note que os diretórios são indicados com um d no início da linha.

    drwxrwxrwx  5 eric eric  4.0K Apr 26  2011 China/
    -rwxrwxrwx  1 eric eric  1.5M Jul 18  2011 img_0066.jpg
    -rwxrwxrwx  1 eric eric  1.5M Jul 18  2011 img_0067.jpg
    -rwxrwxrwx  1 eric eric  1.6M Jul 18  2011 img_0074.jpg
    -rwxrwxrwx  1 eric eric  1.8M Jul 18  2011 img_0075.jpg
    -rwxrwxrwx  1 eric eric   46K Jul 18  2011 scary.jpg
    -rwxrwxrwx  1 eric eric  469K Jan 29  2018 Screenshot from 2017-08-13 21-22-24.png
    -rwxrwxrwx  1 eric eric  498K Jan 29  2018 Screenshot from 2017-08-14 21-18-07.png
    -rwxrwxrwx  1 eric eric  211K Jan 29  2018 Screenshot from 2018-01-06 23-29-30.png
    -rwxrwxrwx  1 eric eric  150K Jul 18  2011 tobermory.jpg
    drwxrwxrwx  6 eric eric  4.0K Apr 26  2011 Tokyo/
    -rwxrwxrwx  1 eric eric  1.4M Jul 18  2011 Toronto 081.jpg
    -rwxrwxrwx  1 eric eric  1.4M Jul 18  2011 Toronto 085.jpg
    -rwxrwxrwx  1 eric eric  944K Jul 18  2011 Toronto 152.jpg
    -rwxrwxrwx  1 eric eric  728K Jul 18  2011 Toronto 173.jpg
    drwxrwxrwx  2 eric eric  4.0K Jun  5  2016 Wallpapers/
    • Ao rodar o comando ls -lrS, qual arquivo aparecerá no início?

      Todas as pastas têm 4.0K, que é o menor tamanho de arquivo. Nesse caso, ls classifica alfabeticamente por padrão. A resposta correta é o diretório scary.jpg

    • Descreva o que você espera ver como saída de ls -ad */.

      Esse comando exibe todos os subdiretórios, incluindo subdiretórios ocultos.

Respostas aos Exercícios Exploratórios

  1. Rode o comando ls -lh num diretório que contenha subdiretórios. Observe o tamanho listado desses diretórios. Esses tamanhos de arquivo parecem corretos? Eles representam com precisão o conteúdo de todos os arquivos contidos naquele diretório?

    A resposta é não. Cada diretório tem um tamanho de arquivo listado como 4096 bytes. Isso acontece porque os diretórios, aqui, são uma abstração: eles não existem em forma de estrutura em árvore no disco. Quando vemos um diretório listado, na verdade estamos vendo um link para uma lista de arquivos. O tamanho desses links é de 4096 bytes.

  2. Eis um novo comando a experimentar: du -h. Rode esse comando e descreva a saída resultante.

    O comando du gera uma lista com todos os arquivos e diretórios e indica o tamanho de cada um. Por exemplo, du -s exibe o tamanho de todos os arquivos, diretórios e subdiretórios em um determinado local.

  3. . Em muitos sistemas Linux, podemos digitar ll e obter a mesma saída que teríamos com ls -l. Porém, note que ll não é um comando. Por exemplo, man ll exibirá a mensagem de que não existe uma página de manual para esse caso. Você acha que isso se relaciona a qual recurso da linha de comando?

    ll é um alias de ls -l. No Bash, podemos usar aliases para simplificar comandos usados com frequência. ll costuma já vir definido no Linux, mas também é possível criar os seus.

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

Próxima Lição

2.4 Criando, Movendo e Deletando Arquivos (2.4 Lição 1)

Ir para a próxima lição

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

A LPI é uma organização sem fins lucrativos.

© 2023 O Linux Professional Institute (LPI) é um organismo de apoio aos profissionais de Open Source e referência mundial em certificação. Com mais de 200.000 pessoas certificadas, somos o principal organismo de certificação independente para Linux e Open Source do mundo. O LPI certificou profissionais de mais de 180 países, oferece exames em diversos idiomas e tem centenas de parcerias de formação em todo o globo.

Nossa missão é proporcionar oportunidades econômicas e criativas para todos, tornando universalmente acessível a certificação de conhecimentos e competências em matéria de Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Entre em Contato
  • Política de Privacidade e Cookies

Encontrou um erro ou quer ajudar a aprimorar esta página? Escreva pra nós.

© 1999–2023 The Linux Professional Institute Inc. Todos os direitos reservados.