Explorando o Linux - Conhecendo diretórios e arquivos
Tags: ubuntu, linux, shell, braziliandevs
Published: 2024-02-05 17:14:20


## Introdução

 O texto abaixo consiste em notas tomadas pelo autor durante o estudo de comandos e conceitos básicos de Linux, grande parte do conteúdo deste artigo foi feito utilizando como apoio o livro **"Começando com o Linux - Comandos, serviços e administração - Autor (Casa do Código)"**. Essa é a parte um de uma série de artigos que será publicado em meu perfil nessa plataforma, aqui abordaremos os primeiros passos na distribuição Ubuntu e conceitos e comandos básicos utilizados em ações cotidianas para arquivos e diretórios utilizando Shell

## Shell

Shell é a interface que nos permite acesso ao sistema operacional, lá é possível realizar comandos e ações em seu sistema operacional.

Ao abrirmos o terminal, nos deparamos com ele e com as seguintes informações:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vd0j95n50v9fn174ijhw.png)

*Ok, mas o que significam estas informações apresentadas em meu terminal?*
-  "lucas" é o nome do usuário;
-  "@DESKTOP..." é o nome do host;
-  ~ é a abreviação para a pasta do usuário;
-  $ indica que meu usuário não possui poderes de administrador.

## Primeiros comandos 

Com nosso terminal aberto e ja sabendo o significado de cada informação apresentada inicialmente nele, é hora de conhecermos alguns comandos possíveis e o que eles realizam.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hydy2q6vaqb6b5h7wqdh.png)

- **pwd**: Este comando retorna o diretório atual em que estamos;
- **date**: Nos informa data e hora atual do sistema; 
- **whoami**: Exibe o nome de usuário atual que esta usando o sistema;
- **ls**: Exibe todos os arquivos e pastas presentes no diretório atual. 

Temos também o comando **history** e o comando **clear**:
- O **history** é responsável por listar todos os últimos comandos executados em seu terminal, ou seja, caso você precise de algum comando executado no passado e que não se recorda, pode usar o history para localiza-lo. Ao executarmos, o resultado apresentado será este:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0drfdd5gtqr38wsxbxu0.png)

- Já o comando **clear** irá nos auxiliar na limpeza de informações no terminal, caso você não deseja mais ver as informações que estão sendo apresentadas, basta executa-lo e o terminal será limpo.

Antes de ser executado:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/keivkavt7c9113m7vug8.png)
Após execução:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e9fmy9wsqmmy2sumwv1q.png)

> Podemos obter o mesmo efeito do comando **clear** utilizando o atalho **Ctrl + L**

## Navegação em diretórios

Para navegarmos em diretórios, o principal comando que iremos utilizar é o **cd** (change directory). Como diz o nome, ele é o que indica ao sistema que estamos trocando de diretório.
O comando cd possui algumas possibilidades, irei listar algumas abaixo que podem facilitar o seu dia a dia enquanto utiliza Linux.

 - **cd /**: Este comando realiza a ação de nos levar ao diretório raiz do sistema (também conhecido como root), ou seja, independente do local que esteja no momento, executa-lo fará com que seja direcionado ao diretório root. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/206lyeqkjdx1e3d4oeoi.png)

- **cd ~**: O "~" indica diretório home do usuário, ou seja, ao executar este comando você irá diretamente para sua pasta de usuário padrão:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vfgydns70hr1ed7yevia.png)

- **cd ..**: Podemos utilizar este comando para retornar um diretório, no exemplo abaixo, estava no diretório "media" e ao executar o comando retornei ao root:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b0vvonlvlrh556le40uw.png)

- **cd (CAMINHO_DIRETÓRIO)**: Ao passar um caminho específico ao comando cd, você também poderá chegar naquele diretório específico:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jus7bglur3w4ooccnay1.png)

>Resumo:
>/: Direciona ao root do sistema; 
>~: Direciona a pasta home de usuário; 
>../: Retorna um diretório;

## Navegação em arquivos

Agora que ja sabemos explorar diretórios, o próximo passo é criar e manipular arquivos dentro deles. Iremos começar esse processo utilizando o comando **mkdir** para criar um novo diretório para armazenarmos nele nossos exemplos.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1chec4vfvzho6bkmr1t6.png)

Feito! Como podemos ver na imagem acima, com o comando executado, agora temos o diretório "examples" criado na home do usuário.
Agora podemos voltar ao tópico principal dessa sessão que é a manipulação dos arquivos.

Para criamos um novo arquivo, basta utilizarmos o comando "**touch (NOME_DO_ARQUIVO)**", como no exemplo abaixo: 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tn3vtdgdi2ihdtct1il6.png)

> Podemos notar que o próprio terminal diferencia arquivos de diretórios com base na cor apresentada ao utilizarmos o comando "ls".

Se repararmos, o arquivo foi criado no diretório home do usuário, mas gostaria que ele ficasse na pasta "examples". Para mover o arquivo, devemos utilizar o comando **mv (NOME_DO_ARQUIVO) (DIRETORIO_DESTINO)**, note que neste comando iremos utilizar dois parâmetros.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s0c5ti6qo0zaxn66q79r.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jib6tis6nzx27c9usl8a.png)

> Caso nosso objetivo seja copiar o arquivo para outro diretório e não move-lo, devemos utilizar o comando **cp** passando os mesmos argumentos do comando mv.
>
>  **cp (NOME_DO_ARQUIVO) (DIRETORIO_DESTINO)**

Utilizando o comando mv, também podemos renomear um arquivo, basta utilizar o comando da seguinte forma: **mv (NOME_ATUAL_ARQUIVO) (NOVO_NOME)**.

No exemplo abaixo utilizo o comando para adicionar a extensão .txt ao arquivo criado:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/37kezrpormh7fx3mya8s.png)

Bom, até agora ja criamos e editamos informações básicas de arquivos, mas como fazemos caso seja necessário deletar o mesmo?

 Para deletar um arquivo, podemos utilizar o comando **rm (NOME_DO_ARQUIVO)**, como no exemplo abaixo:
 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wtd4qt0bh9a6aez3k1wv.png)

> Caso o comando rm seja utilizado da mesma forma em um diretório, o mesmo não será apagado 
>
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/apc7r5g7mgq2hvy9o8x9.png)
> 
> O comando responsável por apagar diretórios é o: **rmdir  (DIRETORIO)** ou podemos utilizar o comando rm passando o argumento -r, dessa forma: **rm -r (DIRETORIO)**