# Arquivos e Diretórios

No linux, tudo é considerado como arquivo, programas, arquivos regulares, diretórios, dispositivos de bloco (como os discos rígidos), dispositivos de caracteres (consoles), procesos do kernel, sockets, partições e etc.

Diretórios são utilizados para armazenar conjuntos de arquivos e outros diretórios. Os diretórios e arquivos,  são case sensitive, portanto, o diretório **/dir** é diferente do diretório **/Dir**.

Os diretórios são especificados por um **/** e não por um \ como no DoS.

Para criar diretórios no sistema linux é utilizado o comando `mkdir + <nome do diretório>.`

**Diretórios Raiz**

Os diretórios seguem uma estrutura de árvores invertida, onde o nível mais alto é chamado de diretório raiz, identificado por um **/** e a partir dele derivam outros diretórios da árvore.

<figure><img src="https://3652049349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSsFzoXz7V7mLiRRuZlST%2Fuploads%2FtezhbHkjXZYAPDMST0XT%2Fimage.png?alt=media&#x26;token=beb469f7-50b0-46f7-a98e-8e8b5c7c27d8" alt=""><figcaption></figcaption></figure>

Acesse o diretório raiz com esse seguinte comando `cd / && ls`

<figure><img src="https://3652049349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSsFzoXz7V7mLiRRuZlST%2Fuploads%2FjDBiSnvayJ82xnELF6On%2F2.png?alt=media&#x26;token=ba72ae7b-20cf-4a9f-a155-4f6b688bfaf4" alt=""><figcaption></figcaption></figure>

O `:/$` indica que o diretório atual é o diretório raiz.

Para navegar entre os diretórios é usado o comando `cd` . Existem duas formas de navegar pelos diretórios:

**1. Caminho absoluto**

Esse modo você parte do diretório raiz `cd /` até seu diretório desejado `cd /home/aluno/Área\ de\ Trabalho/`. Desse modo chegamos até a área de trabalho do usuário aluno a partir do diretório raiz.

<figure><img src="https://3652049349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSsFzoXz7V7mLiRRuZlST%2Fuploads%2F0h8uHBpBiDmDuYoHCTgx%2F3.png?alt=media&#x26;token=8523e20c-1cf4-43b3-9c48-4653cdbd5ca0" alt=""><figcaption></figcaption></figure>

Obs: É uma boa prática salvar arquivos e diretórios sem separações, pois no shell os espaçamentos são caracteres especiais, e a barra invertida `\` é usada como um carácter para informar ao shell que o espaço não deve ser interpretado como um separador, mas sim como parte do nome do diretório. Por exemplo, quando digitamos o comando `ls -lh` tem um separador entre o ls e -lh, e para o shell saber que Área de Trabalho é o nome do diretório e não uma sequência de comandos, deve usar o \ entre cada espaçamento. Então, é comum a prática de evitar espaços e caracteres especiais ao nomear arquivos e diretórios no linux, use \_/- ou até separe assim **IssoEUmArquivo**.

**2. Caminho relativo:**

Outro meio de se chegar a um arquivo ou diretório, é a partir da posição atual que se encontra no terminal. Ao contrário do caminho absoluto, que começa da raiz, esse vai usar a sua localização atual.

Forma de utilizar o comando relativo:

1. Use o comando `pwd` para saber a localização atual
2. Use o comando `cd ..` para voltar ao diretório pai
3. Use o comando cd \<diretório> para acessar um diretório filho&#x20;

<figure><img src="https://3652049349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSsFzoXz7V7mLiRRuZlST%2Fuploads%2FeiLaE7kEGgrRaFLqnOU8%2F4.png?alt=media&#x26;token=5917865c-c85e-4439-8fc0-63c18fbb9eaf" alt=""><figcaption></figcaption></figure>

**Diretório Atual**

O diretório atual é o diretório que se encontra no momento, para saber qual sua localização atual é usado o comando `pwd` O diretório atual é identificado por um . (ponto), onde .. (dois pontos) é seu diretório pai.&#x20;

<figure><img src="https://3652049349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSsFzoXz7V7mLiRRuZlST%2Fuploads%2FxLsuQTZkgAbvwaLVdGq2%2F5.png?alt=media&#x26;token=95204b20-f9d7-40e6-92fc-770205058e02" alt=""><figcaption></figcaption></figure>

**Diretório Home**

É o diretório do usuário que está logado no sistema. No sistema GNU/Linux cada usuário possui o seu próprio diretório home onde armazena seus arquivos e programas. O diretório home é identificado por um \~ (til), ao utilizar o comando `cd ~` você é direcionado ao diretório home do seu usuário.&#x20;

<figure><img src="https://3652049349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSsFzoXz7V7mLiRRuZlST%2Fuploads%2FevpEtbn15Iiqv1rVop1V%2F6.png?alt=media&#x26;token=50ef3656-337c-4f41-9dcf-6f0e14741101" alt=""><figcaption></figcaption></figure>

### Bibliografia

* [Guia Foca GNU/Linux](https://www.ppgia.pucpr.br/pt/arquivos/techdocs/linux/foca-iniciante/ch-perm.html)
