Manipular Arquivos, Diretórios e Navegar no Ambiente Linux pelo Terminal

No terminal de um sistema operacional é possível fazer as mesmas ou até mais coisas que você faria pela interface gráfica: nevegar pelo ambiente, acessar, criar, excluir, renomear arquivos e pastas, fazer uma conexão remota com outro computador, acessar a internet, instalar programas, obter informações do sistema, gerenciar usuários e muito mais.

Entender os comandos para fazer isso, pode nos dar a possibilidade de automatizar tarefas como as citadas acima e ganhar tempo no dia dia de desenvolvimento.

Neste artigo, vamos abordar os comandos para se orientar pelo ambiente Linux e manipular arquivos e diretórios, tudo via linha de comando no terminal.

Abrir o Terminal

Para abrir o terminal basta escrever "terminal" na busca do sistema ou pressionar a combinação de teclas Ctrl + Alt + T no teclado.

Imagem mostra como abrir o terminal no Linux.

Em que pasta estamos?

Quando abrimos o terminal, estamos em alguma "pasta". Aliás, pasta no mundo Linux é chamada de diretório.

Está vendo o til ~, ele representa o diretóeio home, que é a base do nosso usuário. Mas, em alguns temas do Linux ele não aparece. Então, para descobrir de maneira efetiva em qual pasta estamos, podemos utilizar o comando pwd, que significa print working directory.

Imagem mostra comando pwd no terminal do Linux.

Listar Arquivos e Diretórios

O comando ls nos retorna o conteúdo do diretório atual. O terminal do Ubuntu separa o tipo do conteúdo (arquivo ou diretório) pela cor.

Imagem mostra comando ls no terminal do Linux.

Realmente é o que consta em nossa home.

Imagem mostra home do Linux.

Listagem com Parâmetros

Caso queiramos listar arquivos com detalhes ou vê-los por outro ângulo, podemos passar alguns parâmetros junto dos comandos.

Listar com Detalhes

Se eu quiser a listagem longa dos arquivos, passo o parâmetro -l junto com o comando ls.

ls -l

Perceba que na listagem mais detalhada, os arquivos começam com um traço - e os diretórios com a letra d. Essa informação é bem útil para terminais que não diferenciam por cores.

Há ainda informações de usuário, grupo de usuário, permissões, data de modificação e tamanho do arquivo.

Imagem mostra comando ls -l no terminal do Linux.

Listar Tudo

Será que os arquivos mostrados de forma detalhada acima são os únicos dentro da pasta home?

À primeira vista parece que sim, já que os listamos no terminal, entramos na pasta pela interface gráfica e vimos que de fato estavam lá.

E se eu te dissesse que tem mais arquivos dentro do diretório home? Acredite se quiser, mas tem.

Veja só...

Imagem mostra comando ls -la no terminal do Linux.

O Linux deixa invisíveis arquivos de cache e configurações mas...

O parâmetro -la vem de list all e como o próprio nome sugere, lista tudo o que se encontra no diretório.

Os arquivos ou diretórios ocultos começam com um ponto.

Você ainda pode listar tudo de uma forma mais sintética escrevendo...

ls -a

E o resultado será...

Imagem mostra comando ls -a no terminal do Linux.

Imprimir Saídas ou Gravá-las em um Arquivo de Texto

O echo imprime saídas. Seja no próprio terminal ou gravando-as em um arquivo de texto.

O Comando abaixo imprime no terminal.

echo Bem Vindo
Imagem mostra comando echo no terminal do Linux.

Mas eu gostaria de gravar a saída de texto em um arquivo txt. Então redireciono o texto para um arquivo com o sinal de saída de dados >.

Imagem mostra comando echo sendo gravado em arquivo no terminal do Linux.

Repare que, após o Enter, o terminal não imprimiu nada. Isso porque a saída foi gravada no arquivo de texto.

Vamos ver?

Imagem mostra arquivo criado pelo terminal do Linux.

Ao abrir o arquivo em um editor de texto, visualizamos a mensagem.

Imagem mostra arquivo de texto aberto em editor do Linux.

Quando queremos adicionar mais linhas de texto ao mesmo arquivo txt, fazemos assim:

echo Aproveite o conteúdo >> bem-vindo.txt

Veja.

Imagem mostra arquivo txt aberto em editor de texto do Linux.

Ler Arquivos de Texto pelo Terminal

Podemos ler arquivos no próprio terminal. O comando cat recebe o nome do arquivo como argumento e imprime seu conteúdo.

Experimente digitar cat bem e pressione a tecla Tab do teclado. Ele deve ter completado o nome do arquivo para você. Isso nos dá um adianto bacana no dia a dia.

Imagem mostra comando para ler arquivos no terminal do Linux.

Se quiser, você também pode editar texto diretamente pelo terminal utilizando o VI.

Reaproveitando Comandos no Terminal

Outra coisa importante e que facilita nossa vida é a navegação pelo terminal. As teclas de direção para cima (↑) e para baixo (↓) nos permitem navegar entre comandos anteriores.

Essa funcionalidade ajuda muito quando queremos re-executar algum comando anterior, ou até, aproveitá-los como parte da construção de novos.

Limpar o Terminal

Veja que o terminal vai ficando poluído com o tempo.

Imagem mostra terminal do Linux antes do Clear.

Para limpar, utilizamos o comando clear. O atalho Ctrl + L tem a mesma função.

Criando Diretórios

O comando que cria diretórios é o mkdir Make Directory:

Vamos criar um diretório chamado Desenvolvimento com dois projetos fictícios: um chamado Python e outro Javascript.

mkdir Desenvolvimento

cd Desenvolvimento para entrar no diretório recém-criado.

E criamos os outros dois...

					mkdir Projeto_Python
					mkdir Projeto_Javascript
				

Navegar Entre Diretórios

Para navegar entre diretórios, usamos o cd que vem do inglês Change Directory.

Estamos agora no diretório Desenvolvimento e queremos entrar em Projeto_Python.

Para isso, digitamos:

cd Projeto_Python

Se você digitou cd Pr, por exemplo, e pressionou Tab para completar o nome do diretório, deve ter observado que o auto-preenchimento foi feito dessa forma: cd Projeto_.

Isso acontece, porque existe mais de um diretório chamado projeto. E o sistema precisa de mais informações para saber sobre qual deles estamos falando.

Como queremos entrar em Projeto_Python, damos mais uma dica ao sistema digitando P e apertamos Tab novamente. Com isso, ele completa o nome.

Imagem mostra comando para trocar de diretório no terminal do Linux

Aproveitando que estamos em Projeto_Python, vamos criar um arquivo de descrição para ele, que será usado depois. Portanto:

echo Este projeto tem por finalidade... > Description.txt

Vamos voltar para a pasta Desenvolvimento. Isso pode ser feito pelo cd, espaço, duas vezes o caractere ponto, que retorna um nível na hierarquia de diretórios.

cd ..

Em seguida, entramos em Projeto_Javascript, digitando:

cd Projeto_Javascript

Se quisermos voltar diretamente para o diretório base, ou seja, a home (independente do diretório em que estamos) aplicamos cd apenas.

cd
Imagem mostra comando no terminal do Linux para retornar à home do usuário.

O diretório base não é a raiz de tudo. Para acessar a raiz do HD digitamos cd /. O / possui diversos outros diretórios úteis para o funcionamento do Linux. O diretório home por exemplo, é onde estão os diretórios de cada um dos usuários que utilizam a máquina.

Remover Diretórios

Agora que vimos o comando para criar diretórios, o que remove passa a ser até intuitivo. Acertou se você pensou em rmdir pois vem do inglês Remove Directory.

O comando que remove arquivos é somente rm.

Estamos na home e queremos ir diretamente para Projeto_Python. Podemos passar o caminho da pasta precedido pelo cd.

cd Desenvolvimento/Projeto_Python

Em seguida, remover o arquivo Description.txt;

rm Description.txt

Vamos então também remover o diretório.

rmdir Projeto_Python

Por que ficar removendo um a um? Não é melhor remover logo a pasta Desenvolvimento inteira?

Vamos voltar um nível na hierarquia cd .. e executar o comando de remoção então.

rmdir Desenvolvimento
Imagem mostra comando no terminal do Linux para remover diretório com arquivos.

Oopa, não funcionou. O rmdir só remove diretórios vazios. Uma pasta com conteúdo dentro é um arquivo, por isso, usamos rm.

No caso aqui, usamos o parâmetro -r que significa recursivamente, ou seja, excluir a pasta com todos os arquivos e diretórios que estiverem dentro dela.

rm -r Desenvolvimento

Agora sim, excluímos o diretório Desenvolvimento inteiro.

Manual do Comando

Muitos comandos possuem várias opções que alteram seu comportamento. Para saber as possíveis opções de um comando e o que cada uma faz, você pode verificar o manual do comando. Isso é feito digitando man seguido pelo nome do comando que você deseja estudar.

Exemplo:

man cat
Imagem mostra Manual do Comando cat no terminal do Linux.

Usa-se as teclas de direção para navegar e, como o próprio manual sugestiona, h para ajuda e q (quit) para sair.

Caracteres Curinga

Um dos mais utilizados é o caractere asterisco *. Vamos entender com um exemplo.

Digamos que eu tenha um diretório com várias versões de um projeto, da forma como está representado na imagem abaixo.

Listando conteúdo de diretórios no Linux.

Suponha então que eu queira listar tudo o que começa com a palavra versão. A sintaxe é a seguinte: ls versao*. Veja que não é mostrado o arquivo primeira-versao.txt. Mas ele tem a palavra "versão" em seu nome. O detalhe é que não começa com essa palavra.

Curinga asterisco ignora tudo o que sucede.

Se eu quiser, por exemplo, listar todos os arquivos que terminam com ponto txt faço ls *.txt. No nosso exemplo, agora o arquivo zip não é mostrado.

Curinga asterisco ignora tudo o que antecede.

Caso queiramos listar todos os arquivos que contenham em algum lugar de seu nome a palavra "versao", ignorando-se os caracteres que a sucedem ou antecedem, digitamos ls *versao*. Note que agora, é o arquivo projeto-raiz.txt que não é exibido.

Curinga asterisco ignora tudo o que antecede ou sucede.

Há ainda outros caracteres curinga, como o interrogação ? que corresponde a um único caractere em uma posição específica. No nosso exemplo, se executarmos o comando ls versao-d?-cliente.txt vamos obter o seguinte resultado:

Curinga interrogação que corresponde a um único caractere em uma posição específica.

Copiar Arquivos

Recriamos nosso diretório Desenvolvimento da forma como estava antes, para não trabalharmos diretamente na raiz do usuário.

Agora quero fazer uma cópia da descrição do Projeto Python. Para isso, uso o comando cp sucedido do nome do arquivo que desejo copiar e o nome que será atribuído à cópia.

cp Description.txt Description-2.txt

O texto agora está nos dois arquivos.

Imagem mostra as duas cópias da descrição no terminal do Linux.

Copiar Diretórios

Da mesma forma que usamos recursividade através do parâmetro -r, quando tratamos da remoção de diretórios acima, vamos precisar dela para copiar diretórios.

A título de exemplo, faremos uma cópia do Projeto Python:

cp -r Projeto_Python Projeto_Python_v1

Mover Arquivos

Vamos agora mover a descrição para dentro de um diretório chamado Documentação no Projeto Python.

Estando dentro de Projeto_Python, criamos a pasta;

mkdir Documentacao

Listamos para ver se está lá;

ls
Listando conteúdo de diretório no terminal do Linux.

E movemos com o comando mv. Podemos mover com o mesmo nome, através da seguinte sintaxe:

mv Description.txt Documentacao/

Ou mover renomeando:

mv Description.txt Documentacao/Description-3.txt

Renomear Arquivos e Diretórios

Renomear arquivos na linha de comando (em termos práticos) é mover renomeando, mas dentro do mesmo diretório.

Já que estamos no diretório Projeto_Python, e temos aquele arquivo Description-2.txt vamos renomeá-lo para ser o escopo do projeto.

mv Description-2.txt Escopo.txt
Renomear arquivos no terminal do Linux.

Renomear diretórios segue exatamente a mesma sintaxe. Por exemplo, renomear a pasta node-v1.0 para node-v2.0.

mv node-v1.0 node-v2.0

Mover Diretórios

A lógica é a mesma de mover arquivos. Veja um exemplo: temos o nosso diretório Projeto_Python_v1 que criamos anteriormente e vamos movê-lo para dentro de Projeto_Python.

Mover diretório no terminal do Linux.
Ir para o topo