2.3 Lição 1
Introdução
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: |
1 de 2 |
Arquivos e diretórios
O sistema de arquivos do Linux é semelhante ao sistema de arquivos de outros sistemas operacionais, pois contém arquivos e diretórios. Os arquivos contêm dados, como texto legível por humanos, programas executáveis ou dados binários usados pelo computador. Os diretórios são usados para organizar o sistema de arquivos. Eles podem conter arquivos e outros diretórios.
$ tree Documents ├── Mission-Statement.txt └── Reports └── report2018.txt 1 directory, 2 files
Neste exemplo, Documents
é um diretório que contém um arquivo (Mission-Statement.txt
) e um subdiretório (Reports
). O diretório Reports
, por sua vez, contém um arquivo chamado report2018.txt
. O diretório Documents
é considerado o pai do diretório Reports
.
Tip
|
Se o comando |
Nomes de arquivos e diretórios
Os nomes de arquivos e diretórios no Linux podem conter letras minúsculas e maiúsculas, números, espaços e caracteres especiais. No entanto, como muitos caracteres especiais têm um significado preciso no shell do Linux, é recomendável não usar espaços ou caracteres especiais ao nomear arquivos ou diretórios. Para usar espaços, por exemplo, é preciso que o caractere de escape \
seja inserido corretamente:
$ cd Mission\ Statements
Além disso, veja o nome do arquivo report2018.txt
. Os nomes de arquivos podem conter um sufixo após o ponto final (.
). Ao contrário do que acontece no Windows, esse sufixo não tem significado especial no Linux; ele existe para a compreensão humana. Em nosso exemplo, .txt
indica para nós que este é um arquivo de texto sem formatação, embora, tecnicamente, ele possa conter qualquer tipo de dados.
Navegando no sistema de arquivos
Como obter a localização atual
Os shells do Linux, como o Bash, são baseados em texto, e por isso é importante conhecer sua localização atual ao navegar no sistema de arquivos. O prompt de comando fornece essas informações:
user@hostname ~/Documents/Reports $
Trataremos de informações como user
e hostname
futuramente. Graças ao prompt, sabemos que nossa localização atual é o diretório Reports
. Da mesma forma, o comando pwd
serve para imprimir o diretório de trabalho:
user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports
A relação entre os diretórios é representada com uma barra (/
). Sabemos que Reports
é um subdiretório de Documents
, que por sua vez é um subdiretório de user
, localizado em um diretório chamado home
. O home
não parece ter um diretório pai, mas isso não é verdade. O pai de home
se chama root e é representado pela primeira barra (/
). Explicaremos o diretório root em uma seção posterior.
Note que a saída do comando pwd
difere um pouco do caminho mostrado no prompt de comando. Em vez de / home/user
, o prompt de comando contém um til (~
). O til é um caractere especial que representa o diretório inicial do usuário. Trataremos disso em mais detalhes na próxima lição.
Como listar o conteúdo do diretório
O conteúdo do diretório atual é listado com o comando ls
:
user@hostname ~/Documents/Reports $ ls report2018.txt
Note que o ls
não fornece informações sobre o diretório pai. Da mesma forma, por padrão, ls
não exibe nenhuma informação sobre o conteúdo dos subdiretórios. O ls
pode apenas “ver” o que está no diretório atual.
Como mudar de diretório
A navegação no Linux é feita principalmente com o comando cd
. Esse comando muda de diretório. Usando o comando pwd
como anteriormente, sabemos que nosso diretório atual é /home/user/Documents/Reports
. Podemos mudar nosso diretório atual inserindo um novo caminho:
user@hostname ~ $ cd /home/user/Documents user@hostname ~/Documents $ pwd /home/user/Documents user@hostname ~/Documents $ ls Mission-Statement.txt Reports
Neste novo local, podemos “ver” Mission-Statement.txt
e o subdiretório Reports
, mas não o conteúdo de nosso subdiretório. Podemos navegar de volta para Relatórios
assim:
user@hostname ~/Documents $ cd Reports user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports user@hostname ~/Documents/Reports $ ls report2018.txt
Agora estamos de volta onde começamos.
Caminhos absolutos e relativos
O comando pwd
sempre imprime um caminho absoluto, ou seja, o caminho contém todas as etapas, desde o início do sistema de arquivos (/
) até o final (Reports
). Os caminhos absolutos sempre começam com um /
.
/ └── home └── user └── Documents └── Reports
O caminho absoluto contém todas as informações necessárias para se chegar a Reports
a partir de qualquer lugar no sistema de arquivos. A desvantagem é que é tedioso digitá-lo inteiro.
O segundo exemplo (cd Reports
) foi muito mais fácil de digitar. Esse é um exemplo de caminho relativo. Os caminhos relativos são mais curtos, mas só têm significado em relação à sua localização atual. Considere esta analogia: eu estou visitando você em sua casa. Você me diz que seu amigo mora na casa ao lado. Entenderei esse local porque tem relação com meu local atual. Mas se você me disser isso por telefone, não poderei encontrar a casa do seu amigo. Você precisará me fornecer o endereço completo.
Caminhos relativos especiais
O shell do Linux oferece maneiras de encurtar os caminhos durante a navegação. Para revelar os primeiros caminhos especiais, inserimos o comando ls
com a flag -a
. Essa flag modifica o comando ls
para que todos os arquivos e diretórios sejam listados, incluindo os arquivos e diretórios ocultos:
user@hostname ~/Documents/Reports $ ls -a . .. report2018.txt
Note
|
Consulte a página |
Esse comando revelou dois resultados adicionais: Estes são caminhos especiais. Eles não representam novos arquivos ou diretórios, mas sim diretórios que você já conhece:
.
-
Indica o local atual (neste caso,
Reports
). ..
-
Indica o diretório pai (neste caso,
Documents
).
Geralmente, não é necessário usar o caminho relativo especial para o local atual. É mais fácil e compreensível digitar report2018.txt
do que digitar ./Report2018.txt
. Mas o .
tem usos que você aprenderá nas próximas seções. Por enquanto, vamos nos concentrar no caminho relativo para o diretório pai:
user@hostname ~/Documents/Reports $ cd .. user@hostname ~/Documents $ pwd /home/user/Documents
O exemplo de cd
é muito mais fácil quando se usa ..
em vez do caminho absoluto. Além disso, podemos combinar esse padrão para subir rapidamente pela árvore de arquivos.
user@hostname ~/Documents $ cd ../.. $ pwd /home
Exercícios Guiados
-
Identifique se cada um dos caminhos a seguir é absoluto ou relativo:
/home/user/Downloads
../Reports
/var
docs
/
-
Observe a seguinte estrutura de arquivo. Nota: Os diretórios terminam com uma barra (
/
) quandotree
é chamado com a opção-F
. Você precisará de privilégios elevados para executar o comandotree
no diretório root (/
). O exemplo de saída a seguir é apenas demonstrativo e não é indicativo de uma estrutura de diretório completa. Use-o para responder às seguintes questões:$ tree / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Use essa estrutura para responder às questões a seguir.
Um usuário insere os seguintes comandos:
$ cd /etc/udev $ ls -a
Qual será a saída do comando
ls -a
? -
Digite o comando mais curto possível para cada um dos seguintes enunciados:
-
Seu local atual é root (
/
). Digite o comando para navegar atélost+found
dentro do diretóriohome
(exemplo):$ cd home/lost+found
-
Seu local atual é root (
/
). Digite o comando para navegar até o diretório/etc/network/
. -
Seu local atual é
/home/user/Documents/
. Navegue até o diretório/etc/
. -
Seu local atual é
/etc/systemd/system/
. Navegue até o diretório/home/user/
.
-
-
Considere os seguintes comandos:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Qual a saída do comando
pwd
final?
Exercícios Exploratórios
-
Supondo que um usuário tenha inserido os seguintes comandos:
$ mkdir "this is a test" $ ls this is a test
Qual comando
cd
permitiria entrar nesse diretório? -
Tente o mesmo exercício novamente, mas depois de digitar
cd this
, pressione a tecla TAB. O que é exibido no prompt?Isso é um exemplo de autocompletar, uma ferramenta inestimável não somente para poupar tempo como também para evitar erros de digitação.
-
Tente criar um diretório cujo nome contenha um caractere
\
. Exiba o nome do diretório comls
e remova o diretório.
Resumo
Nesta lição, você aprendeu:
-
As bases do sistema de arquivos do Linux
-
A diferença entre diretórios pai e subdiretórios
-
A diferença entre caminhos de arquivo absolutos e relativos
-
Os caminhos relativos especiais
.
e..
-
Navegação no sistema de arquivos usando
cd
-
Mostrar seu local atual usando
pwd
-
Listar todos os arquivos e diretórios usando
ls -a
Os seguintes comandos foram discutidos nesta lição:
cd
-
Muda o diretório atual.
pwd
-
Imprime o caminho do diretório de trabalho atual
ls
-
Lista o conteúdo de um diretório e exibe as propriedades dos arquivos
mkdir
-
Cria um novo diretório
tree
-
Exibe uma lista hierárquica de uma árvore de diretórios
Respostas aos Exercícios Guiados
-
Identifique se cada um dos caminhos a seguir é absoluto ou relativo:
/home/user/Downloads
absoluto
../Reports
relativo
/var
absoluto
docs
relativo
/
absoluto
-
Observe a seguinte estrutura de arquivo. Nota: Os diretórios terminam com uma barra (
/
) quandotree
é chamado com a opção-F
. Você precisará de privilégios elevados para executar o comandotree
no diretório root (/
). O exemplo de saída a seguir é apenas demonstrativo e não é indicativo de uma estrutura de diretório completa. Use-o para responder às seguintes questões:$ tree / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Um usuário insere os seguintes comandos:
$ cd /etc/udev $ ls -a
Qual será a saída do comando
ls -a
?. .. rules.d udev.conf
-
Digite o comando mais curto possível para cada um dos seguintes enunciados:
-
Seu local atual é root (
/
). Digite o comando para navegar atélost+found
dentro do diretóriohome
(exemplo):$ cd home/lost+found
-
Seu local atual é root (
/
). Digite o comando para navegar até o diretório/etc/network/
.$ cd etc/network
-
Seu local atual é
/home/user/Documents/
. Navegue até o diretório/etc/
.$ cd /etc
-
Seu local atual é
/etc/systemd/system/
. Navegue até o diretório/home/user/
.$ cd /home/user
-
-
Considere os seguintes comandos:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Qual a saída do comando
pwd
final?/etc/systemd
Respostas aos Exercícios Exploratórios
-
Supondo que um usuário tenha inserido os seguintes comandos:
$ mkdir "this is a test" $ ls this is a test
Qual comando
cd
permitiria entrar nesse diretório?$ cd this\ is\ a\ test
-
Tente o mesmo exercício novamente, mas depois de digitar
cd this
, pressione a tecla TAB. O que é exibido no prompt?$ cd this\ is\ a\ test
Isso é um exemplo de autocompletar, uma ferramenta inestimável não somente para poupar tempo como também para evitar erros de digitação.
-
Tente criar um diretório cujo nome contenha um caractere
\
. Exiba o nome do diretório comls
e remova o diretório.É possível escapar da barra usando outra barra (
\\
) ou aspas simples ou duplas em torno do nome completo do diretório:$ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir'