Começando com o terminal: manipulando arquivos e diretórios | Alura
Veja como utilizar o terminal para criar, excluir, renomear arquivos e diretórios.
Quando estamos programando, é bem comum nos depararmos com situações na qual temos que utilizar o terminal.
Seja para dar um commit nas alterações, fazer uma consulta no banco de dados, ou simplesmente procurar por um arquivo, o terminal está presente. Apesar de muitos não gostarem, ou terem medo de usar o terminal, este pode ser uma ferramenta poderosa.
"Mas se hoje em dia possuem interfaces gráficas, por que utilizar o terminal?"
Algumas interfaces gráficas, apesar de ajudarem muito, não são muito intuitivas, ou são muito lentas, seja para iniciar, carregar módulos, ou outras coisas. Ou então, queremos aprender como as coisas funcionam no seu core.
Com o terminal temos um resultado mais direto e, algumas vezes, mais rápido do que pela interface gráfica, apesar de não ser tão bela a apresentação. Além disso, podemos realizar algumas tarefas com poucos comandos, ou, até mesmo, criar os nossos próprios.
Quando falamos em terminal, logo já vem uma imagem de alguma distribuição Linux na cabeça, porém podemos utilizar o terminal no Mac também, alguns comandos são idênticos entre esses sistemas.
No Windows, também temos a possibilidade de utilizar o terminal, nele é chamado de cmd, ou prompt de comando, porém no Linux e no Mac essa prática é mais comum. Por isso, os comando que veremos pelo terminal poderão ser usados no Linux e no Mac, mas não são compatíveis com o Windows.
Mas então, como começar a utilizar o terminal?
A primeira coisa que devemos saber sobre o terminal é que podemos fazer tudo que fazemos no ambiente gráfico. Desde buscar, criar e editar arquivos e diretórios, obter informações do sistema, criar usuários e grupos, a até mesmo acessar um site na web.
É importante saber onde estamos, isto é, em qual diretório estamos. Quando abrimos o terminal, na maioria das distribuições Linux, vamos estar na pasta home do usuário que estamos utilizando.
Estão vendo o sinal ~? Ele que nos indica que estamos no diretório home. Dependendo do tema do terminal, esse sinal não aparece. Então, como podemos ter certeza que estamos no diretório home?
Podemos falar para o terminal mostrar para a gente o diretório atual, ou seja, imprimir o diretório que estamos trabalhando (pwd, print working directory):
Veja que ele nos mostra o caminho (path) absoluto até o diretório que estamos. Já sabemos onde estamos, mas qual será o conteúdo do nosso diretório? Podemos falar para o terminal listar (ls, list) o seu conteúdo:
Veja que esse comando lista todos os arquivos e pastas dentros diretório no qual estamos. E se quisermos saber quais os arquivos que estão dentro do diretório Docker por exemplo? Podemos pedir para ele listar o conteúdo de um diretório passando o caminho até ele:
ls Docker/
Notou que não passamos o caminho absoluto até o diretório, ou seja, /home/yuri/Docker? Isso porque quando estamos dentro de um diretório já podemos acessar diretamente suas pastas e arquivos sem precisar passar o caminho absoluto. Nós chamamos isso de caminho relativo.
Legal, já conseguimos descobrir em qual diretório estamos e quais arquivos ele contém, mas como mudamos de diretório?
A maioria dos comandos do terminal são semânticos, porém devemos lembrar que os comandos estão em inglês e, alguns, estão abreviados. Ou seja, se queremos mudar de diretório, basta colocar essa informação em inglês (cd, change directory):
Pronto! Estamos no diretório Docker/. Vamos ver o que tem nele:
Mas e se existir algum arquivo ou diretório oculto na pasta? Isto é, arquivos que estão lá, mas não aparecem quando listamos. Para conseguir ver esses arquivos, podemos pedir para o comando ls listar tudo (-a, all), até os arquivos ocultos .
Veja que apareceu o .arquivo-oculto e mais dois símbolos o . e o ... O que eles significam?
Podemos dizer que são atalhos do sistema. O . significa o diretório atual, ou seja, /home/yuri/Docker. Já o .. significa o diretório pai, portanto, /home/yuri/.
Nós podemos utilizar esses atalhos com junto com os comandos, por exemplo o comando cd .. vai para o diretório pai:
Já vimos como mudamos de diretórios, listamos seu conteúdo e como nos localizar no sistema. Com o terminal também podemos manipular arquivos e diretórios, ou seja, podemos criar, excluir, renomear e mover arquivos e diretórios no sistema. Mas como fazemos isso?
Existem diversas formas de criar arquivos no sistema. Podemos utilizar um editor de texto, escrever o texto e depois salvá-lo, ou então, utilizar comandos para criar arquivos.
Um comando que é utilizado para criar arquivos no sistema é o touch, com ele conseguimos, entre outras coisas, criar arquivos no sistema.
Estou estudando Python, então queria criar um arquivo para praticar o que estou estudando. Portanto, podemos utilizar o touch para criar esse arquivo para a gente.
touch estudos.py
Mas como podemos saber se esse arquivo foi criado mesmo? Podemos listar o diretório e ver se ele está ali.
Nosso arquivo foi criado, agora podemos editá-lo. Mas faz sentido deixarmos esse arquivo jogado no sistema? Agora sabemos onde ele está e o que significa, mas e depois quando quisermos ter mais arquivos relacionados ao estudo de Python? Seria legal colocarmos esse arquivo em um pasta para organizar melhor as coisas.
Então vamos falar para o terminal criar um diretório (mkdir, make directory) onde podemos colocar nossos arquivos de estudos:
mkdir Estudos
Será que a pasta realmente foi criada? Vamos listar novamente o diretório para ter certeza:
Legal, temos nossa pasta Estudos e nosso arquivo estudos.py que deveria ficar dentro do nosso diretório. Como podemos colocar ele lá? Será que vamos ter que criar outro arquivo dentro desse novo diretório?
Nós podemos mover (mv) o nosso arquivo estudos.py para dentro do diretório Estudos, assim não precisamos criar outro arquivo:
mv estudos.py Estudos/
Vamos listar o diretório Estudos/ e ver se o arquivo foi movido:
ls Estudos/
Como podemos ver nosso arquivo foi movido sem nenhum problema, mas pensando em organização, será que estamos bem organizados?
Temos um diretório Estudos/ e dentro dele um arquivo estudos.py, mas sobre o que esse é arquivo realmente? O que eu estava estudando quando eu o criei? Nós podemos renomear o arquivo para que ele fique mais semântico.
Nós já vimos o comando para renomear arquivos, só que utilizamos ele para outro propósito. Antes de mais nada vou entrar no diretório Estudos/ (cd Estudos/) e pedir para o terminal renomear (mv) meu arquivo de estudos.py para coletando_dados.py:
mv estudos.py coletando_dados.py
Eu sei que pode parecer estranho utilizar o mesmo comando para mover e renomear, mas este comando faz essas duas coisas! Como sabemos então se estamos removendo ou renomeando um arquivo?
Se utilizarmos o comando mv em um arquivo e colocarmos no segundo parâmetro outro nome de arquivo, estamos renomeando, já se colocarmos o caminho de um diretório, o arquivo será movido. O mesmo comportamento se aplica a pastas.
Mais alguns comandos
Além desses, existem diversos outros comandos para serem usados no terminal, podemos por exemplo remover (rm, remove) um arquivo:
rm coletando_dados.py
Podemos também utilizar esse comando para remover diretórios:
rm Estudos/
Ops, não conseguimos remover. Isso porque quando utilizamos o comando rm para remover um diretório, não queremos apenas remover o diretório. Queremos remover o diretório e todos os seus arquivos. Ou seja, queremos que a remoção seja recursiva (-R, recursive).
Recursivo para o Linux é quando executamos um comando em um diretório e o seu conteúdo também é afetado por esse comando. Por exemplo, quando estamos removendo um diretório. Mas atenção, não usamos a opção -R para o comando mv quando estamos movendo um diretório.
Podemos também, ler o conteúdo de um arquivo sem abrir um editor de textos. Falamos para o terminal ler o conteúdo de um arquivo (cat).
Mas ficamos com muita coisa escrita no terminal. Não precisamos ficar com essa informação para sempre na tela, logo, podemos falar para limpar (limpar) o terminal.
Existem diversos outros comandos e usos para o terminal. Podemos copiar arquivos e diretórios, acessar outros computadores remotamente, editar e procurar arquivos, atualizar o sistema, particionar e formatar HDs e pendrives, entre diversas outras coisas.
Se interessou em descobrir o poder do terminal? Aqui na Alura temos um curso sobre Linux onde você aprenderá sobre esses e muitos outros comandos para utilizar o terminal.
Se você quiser se aprofundar um pouco mais no terminal, temos a formação sobre a certificação LPI Linux Essentials. Nela, você aprenderá sobre a filosofia open source, sobre como utilizar o terminal para realizar diversas tarefas, como buscar ajuda pelo terminal, como trabalhar com arquivos e diretórios, permissões e segurança, entre outras coisas.