Usando linhas de comando para navegar por diretórios e manipular arquivos
Tags: cli, unix, linux, mlops
Published: 2022-04-25 03:57:19

Um dos primeiros desafios apresentados ao começar a utilizar o terminal do Linux é como realizar coisas básicas que já estamos completamente acostumados a fazer pela interface gráfica. Criar um arquivo de texto, navegar para uma pasta específica, mover ou copiar um arquivo são exemplos clássicos de iniciantes da poderosa ferramenta de linha de comando.

Este curto artigo tem como objetivo mostrar os primeiros passos e ajudar no entendimento de alguns comandos básicos.


## Se encontrando
Definitivamente o primeiro comando que devemos utilizar é o `ls`, com ele podemos listar todos os arquivos e pastas de onde estamos (sim, o terminal vai rastrear a nossa navegação de forma parecida à interface gráfica e o comando `pwd` permite visualizar o caminho completo da posição atual na árvore de diretórios). 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ywhcw06dxdttu3sm7uy7.png)
 
Ao utilizar o `ls` é possível ver pastas da home, como o Desktop, Documents, Downloads etc. Para listar todos os arquivos em qualquer uma dessas pastas, basta passar o nome da pasta como um **argumento**, como, por exemplo `ls Downloads`, e assim listar todos os arquivos dessa pasta. Além de argumentos, esses comandos também podem conter _flags_, que são basicamente opções e são precedidas de hífens.

## Navegando
Para acessar uma pasta basta utilizar o comando `cd` seguido do nome da pasta que queremos acessar. Para isso, feche e abra um novo terminal, e tente acessar o desktop com `cd Desktop`. Caso você queira voltar, o equivalente a apertar no botão da seta pra esquerda no topo de uma janela, basta executar `cd ..` e irá retornar uma pasta no seu caminho.

## Criando pastas e arquivos
O comando para criar uma pasta é `mkdir` seguido do nome que desejamos dar (Atenção aos caracteres especiais e a utilizar uma contrabarra ao adicionar um espaço). Podemos ver no exemplo abaixo como criar e acessar uma página.![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugy2jjfrqesj24j5uduo.png)

De forma semelhante, podemos encurtar com o comando `mkcd`, que é basicamente um atalho que faz as duas coisas.

Agora, para criar um arquivo vazio basta utilizar o comando `touch`, para criar um arquivo python, por exemplo, basta utilizar `touch script.py`.
 ![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ox1xqcg5m33b5xxj4gip.png)

## Deletando
Para remover o arquivo que acabamos de criar basta utilizar o comando `rm` seguido do nome do arquivo. Então, basta estar na pasta que o arquivo está e executar `rm script.py`. Podemos listar os arquivos e ver se ele ainda se encontra lá.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rrv0ovyh5zj0nca1mwc5.png)
 
Agora, para remover a pasta que acabamos de criar, vamos voltar para o diretório onde a criamos com o comando `cd ..` e tentar remover utilizando `rm pagina`. Logo podemos perceber que é impresso um erro na tela indicando que não podemos remover por ser um diretório.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kltno00xo7r666k09wtd.png)
 
Investigando como resolver esse problema, podemos consultar o manual de uso do `rm` com o comando `man rm`. Lá se encontra o nome, como utilizar, a descrição do que o comando faz e as opções que temos ao executá-lo, o comando man é muito útil e podemos utilizar com basicamente qualquer outro comando. Nas opções, é possível ver que, ao utilizar a flag `-r`, podemos deletar uma pasta e **tudo o que estiver dentro dela** de forma recursiva.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0mxv37lzivvneo1yj4xd.png)

## Conclusão e próximos passos
A jornada para aprender a utilizar o terminal com proficiência é realativamente longa, mas é possível ir incrementando aos poucos o portfólio do que conseguimos fazer com ele. À medida que nos familiarizamos com o terminal, preferimos utilizar comandos que se adequem perfeitamente às nossas necessidades para resolver problemas e pode ser muito útil para desenvolvedores de software.

Muita coisa não foi abordada aqui mas que merece uma exploração futura, como: Mover e modificar arquivos, o conceito e gerenciamento de permissões, como executar programas pelo terminal, transmissão de input e output, como utilizar _regex_ para ampliar as capacidades. A lista é bem grande. Dessa forma, finalizo o artigo com uma lista de alguns outros comandos mais básicos para os primeiros passos nessa jornada.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6m88pvfn6lkyyw4evkia.png) 

> https://www.researchgate.net/profile/Li-Guo-4/publication/327422883/figure/tbl1/AS:669839723081731@1536713643856/List-of-basic-Linux-commands.png