Neste guia você aprenderá como utilizar o terminal linux como seu amigo e não como um bicho de sete cabeças. Ele é muito útil tanto para depurar problemas, fazer coisas em ambientes sem interface gráfica, ações rápidas por comandos, rodar scripts, depurar softwares e muito mais!
O que este artigo é
- Escrito para aprender conceitos básicos para o primeiro contato;
- Tarefas básicas no terminal, como criar, listar e navegar em diretórios, listar, criar, copiar e remover arquivos, etc.
- Aprender como automatizar usando um script simples em bash script.
O que este artigo não é
- Tutoriais avançados sobre terminal, bash e linux;
- Automações avançada com bash script;
Não tenha medo
O terminal em uma distribuição linux moderna focada em usuário final e não em servidores é muitas vezes opcional e você pode utilizar como uma ferramenta para alcançar seu objetivo. Ele está ali para te ajudar. Digite um comando (em alguns casos com argumentos extras) e tecle ENTER para ser executado. Cada comando é normalmente direto e possui seus próprios argumentos, mas não precisa decorar todos (existe documentação para caso queria utilizar alguma função), mas há alguns que você precisa saber para conseguir uma base e não ficar perdido, é exatamente deles que tratarei neste artigo.
Comandos
Navegação e Arquivos
Uma das coisas mais básicas que é necessário aprender para não ficar perdido ao gerenciar arquivos e diretórios por linha de comando. Claro, é possível fazer através de uma interface gráfica, mas e quando você não tem essa possibilidade?
- PWD: Mostra o diretório atual.
- LS: Lista arquivos e diretórios.
- MKDIR: Cria um diretório.
- CD: Navega em diretórios.
- CP: Copia e cola arquivos.
- MV: Move arquivos.
- TOUCH: Cria um arquivo vazio.
Exercícios
Complementares
- “Diretório”: diretório é o local onde estão outros diretórios e arquivos. Tambem é chamado de “pastas”.
- “#”: comentários, tudo nesta linha depois do # será desconsiderado.
Navegando em diretórios
“Como eu faço para entrar naquela minha pasta do projeto pelo terminal?”, para não ficar perdido na hora de procurar algum local onde estão arquivos ou entrar em uma pasta para executar algo, você pode utilizar esses comandos para navegar em diretórios/pastas que seu usuário tem acesso normalmente. Abaixo vou deixar alguns comandos comuns.
PWD
pwd é da sigla “Print Working Directory” (Imprima o diretório de trabalho atual), faz exatamente isso, exibe o caminho completo de onde você está no momento.
Exemplo de uso:
Input:
pwd
Output:
/home/mb
Obs: Em “mb” é o meu nome de usuário, no seu irá aparecer o usuário atual logado. Neste caso eu estava no diretório raiz do usuário, mas se eu estiver, por exemplo, dentro da minha home e dentro do diretório “dev”, ficaria “/home/mb/dev”.
LS
ls (List Files and Directories) lista todos os subdiretórios e arquivos no diretório atual.
Input:
# Lista o diretório atual.
ls
Output:
# Como estou na HOME do meu usuário, ele está em "/home/mb" ou "~/".
# /home/mb
Desktop Documents Dev Musics Videos Downloads
todo.md partyphoto.jpg
Normalmente os arquivos e diretorios ficam com cores diferentes para contraste. É possível também listar outro diretório passando o caminho para ele, por exemplo, listar diretamente tudo que tem em “Dev” sem precisar entrar.
Input:
# Esse "~/" representa o diretório do usuário, no meu caso, seria equivalente a "/home/mb"
ls ~/Dev
Output:
# Mostra tudo que tem no diretório "~/Dev" = "/home/mb/Dev".
# /home/mb/Dev ou ~/Dev
Github Gitclone Lab tmp Scripts
pull.sh TODO.md IDEAS.md
É possível também utilizar argumentos, que normalmente usam “-“(curto) ou “–“(longo) para sua utilização. Para ver uma lista de ajuda, por exemplo, use:
Input:
# Use ls --help para ajuda sobre esse comando.
ls --help
Um dos argumentos do ls mais utilizados talvez seja o “-a” que lista também os diretórios e arquivos ocultos.
Input:
# Pode ser utilizado também "--all".
ls -a
# Saída no diretório atual "/home/mb":
# Desktop Documents Dev Musics Videos Downloads
# .config .local .ssh .themes .topsecretfiles
# .database.db todo.md partyphoto.jpg
Note que há arquivos que começam com “.”, são arquivos ou diretórios ocultos, se você nomear algum arquivo ou diretório com esse começo, eles se tornam ocultos e você só conseguirá ver se a opção de listar itens ocultos estiver habilitada, isso inclui o próprio gerenciador de arquivos em modo gráfico.
MKDIR
Mkdir significa “Make Directory”, ou seja, cria um diretório com o nome que você especificou.
mkdir nomedoseudiretorio
Não há muito segredo, basta entrar no diretório e executar o comando, para criar uma pasta no diretório atual. Caso queira criar em outro, basta especificar o caminho seguido do nome.
mkdir ~/Documents/Library
CD
cd é da sigla “Change Directory”, que como o próprio nome sugere, navega para outro diretório. É bem fácil de usar e provavelmente você usará muito ele para navegar nas pastas.
Exemplos de uso:
Input:
cd ~/
Digamos que estou no diretório raiz do usuário e quero entrar no diretório onde está um projeto que estou desenvolvendo. Este está dentro do diretório “Dev” que está dentro de “Github” e seu nome é “PenguinsHomepage”.
Exemplos de uso:
Você pode usar a maneira irritante de navegar um por um.
# /home/mb ou apenas ~/
cd Dev
# /home/mb/Dev ou ~/Dev
cd Github
# /home/mb/Dev/Github ou ~/Dev/Github
cd PenguinsHomepage
# Pronto, você está no diretório.
# /home/mb/Dev/Github/PengunsHomepage ou ~/Dev/Github/PenguinsHomepage
Ou a maneira mais rápida para isso.
# /home/mb ou apenas ~/
cd Dev/Github/PenguinsHomepage
# Pronto, você está no diretório.
# /home/mb/Dev/Github/PengunsHomepage ou ~/Dev/Github/PenguinsHomepage
Você também pode voltar para o diretório anterior usando “..” depois do comando cd. Da forma irritante:
# /home/mb/Dev/Github/PenguinsHomePage
# Quero ir para "/home/mb/Dev".
cd ..
# /home/mb/Dev/Github/
cd ..
# Agora você está em: /home/mb/Dev/
Ou da forma mais rápida, onde cada “..” é um diretório anterior.
# /home/mb/Dev/Github/PenguinsHomePage
# Quero ir para "/home/mb/Dev".
cd ../..
# Agora você está em: /home/mb/Dev
CP
CP seria “Copy”, é o que ele faz, cópias de arquivos. Para copiar um arquivo para o mesmo diretório ou para outros é muito fácil, pois é só colocar o comando cp, depois o nome do arquivo e onde você quer que ele seja salvo.
# Exemplo de um arquivo txt que está no diretório atual, que será copiado para a raiz do usuário.
cp meuarquivo.txt ~/
MV
De “Move”, em vez copiar ele move o arquivo de um local para outro.
# Exemplo de um arquivo txt que está no diretório atual, que será movido para a raiz do usuário.
mv meuarquivo.txt ~/
TOUCH
O comando touch cria arquivos vazios, além de conseguir também alterar a data de criação (timestamp), mas o que você precisa saber é sua primeira função.
touch ~/mybook.txt
Você criou um arquivo vazio chamado “mybook.txt” na pasta raiz do usuário “~/”, assim, é possível editar com um editor de texto no terminal, por exemplo, como o vim ou emacs.
Gerenciamento de Pacotes
Pacotes podem ser programas ou dependências de programas (programas que são usados por outros para funcionar) e saber gerenciar pacotes por linha de comando pode te ajudar em algumas situações, apesar de não ser obrigatório.
- Tipos de pacotes: Os tipos de empacotamento de programas de distribuições linux.
- Executáveis: Executáveis são arquivos que podem ser abertos como programas e executar sem necessariamente serem instalados.
- AppImage: Programas empacotados como appimage podem ser executados como um “programa portátil” de qualquer lugar, bastando a distribuição ter suporte a appimage.
- Flatpak: Flatpaks também são programas que tem seus pacotes disponíveis para todas as distribuições que suportam este formato.
- Código Fonte: Código fonte são arquivos que não estão compilados e precisam fazer a etapa de compilação no sistema para criar um binário executável.
Tipos de Pacotes
Há vários tipos de formato de empacotamento de programas no mundo linux e vai depender da distribuição linux e algumas vezes da instalação de suporte adicional, como é o caso do flatpak e appimage (também existem distribuições com suporte a esses formatos já instalado).
- Universal: Pacotes feitos para funcionar em qualquer distribuição com suporte habilitado. São exemplos de pacotes ou gereciadores de pacotes universais: Flatpak, Snap, AppImage (“.appimage”).
- deb: Pacotes “debian” são programas empacotados em formato debian que usam a extensão “.deb”, funcionam em distribuições Debian e derivadas, como, por exemplo, Ubuntu, Linux Mint, KDE Neon, Zorin OS, Pop!_OS, entre outras.
- rpm: Pacotes “redhat” são programas empacotados em formato do gerenciador “Red Hat Package Manager” (RPM), funcionam em distribuições baseadas em Red Hat ou que usam esse gerenciador de pacotes.
- pacman / ZST: Pacotes “Package Manager” (“.pacman” ou “.zst”) normalmente usados na distribuição Arch Linux e baseados, gerenciados com o gerenciador de pacotes pacman.
Executáveis
Arquivos executáveis normalmente podem ser abertos ao dar permissão de execução no gerenciamento de permissões do sistema e executando o arquivo inicial do programa. Por exemplo:
Imagine que baixei um arquivo compactado “.tar.gz2” do “Firefox” e descompactei em um diretório.
browser/
defaults/
fonts/
gmp-clearkey/
icons/
lib/
libgkcodecs.so
(...)
firefox
Note que há um arquivo “firefox” sem nenhuma extensão, este é o arquivo executável. A partir daqui eu posso ou instalar manualmente no sistema ou executar diretamente deste diretório. Para executar este arquivo através do terminal, primeiramente dê permissão de execução com chmod:
chmod +x ./firefox
O “+” significa que estou adicionando permissão e o “x” é de “executar”. Obs: Algumas interfaces e programas, como o gerenciador de arquivos Dolphin, permitem que no diálogo de informações do arquivo e em “permissões”, possa marcar uma caixa para adicionar esta permissão. Note que, após dar permissão para o arquivo, não precisa ficar adicionando permissão toda vez que quer executar ele, essas informações já ficam salvas.
E agora basta executar usando “./”
./firefox
Se tudo ocorrer bem o programa será aberto. Caso dê algum problema e ele não abra, pode ser que algumas dependências necessárias não estão instaladas no sistema e isso normalmente é avisado no terminal.
AppImage
AppImages são pacotes que podem ser executados em qualquer distribuição que tenha suporte habilitado e funcionam bem parecido com os executáveis, bastando dar permissão e executar o arquivo, com a diferença que normalmente todas as dependências e o próprio programa estão concentrados em um único arquivo, que também pode se integrar com o sistema.
Por exemplo, digamos que baixei o Firefox em AppImage, o arquivo é basicamente o “firefox.appimage”.
firefox.appimage
Basta agora dar permissão de execução e executar o arquivo.
chmod +x firefox.appimage
./firefox.appimage
Algumas distribuições podem mostrar um erro, como é o caso de um container debian que tenho no chromebook, que não funciona appimage normalmente. Descobri que é preciso instalar o “libfuse” (seja o 2, 3 ou ambos) para funcionar, fica a dica caso apareça algum erro do tipo.
Flatpak
Flatpaks podem ser instalados pelo gerenciador de pacotes Flatpak, sendo necessário instalar e habilitar o suporte em distribuiçõs que não tem instalado ou desabilitado. Caso sua distro não tenha, veja se há suporte na página Get setup do flatpak.org.
Este formato é distribuido e não opinativo, não há nada configurado previamente na primeira instalação. É recomendável que adicione também o repositório oficial do flatpak, o Flathub:
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Isso quer dizer que, se você não quiser o repositório oficial e quiser colocar os seus próprios, não há nenhum problema, basta não adicionar o repositório oficial.
Falando em Flathub esta é uma loja curada pela equipe do projeto com diversos programas que podem ser instalados facilmente. Por exemplo, caso você queira instalar o GIMP (GNU Image Manipulation Program), na página dele no flathub há as instruções.
# Instalação do programa pelo flatpak. O "flathub" é o nome do repositório e "org.gimp.GIMP" é o pacote.
flatpak install flathub org.gimp.GIMP
Para executar:
flatpak run org.gimp.GIMP
Também todo esse processo pode ser executado através da loja de aplicativos da sua distribuição, somente adicionando o suporte a flatpaks para a mesma e o repositório remoto.
Por exemplo, para a loja “Gnome Software” no Ubuntu:
sudo add-apt-repository ppa:flatpak/stable
sudo apt update
sudo apt install gnome-software-plugin-flatpak
sudo apt install flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Com isso, provavelmente já está tudo funcionando.
Código fonte
São normalmente os arquivos literalmente de código fonte, ou seja, de desenvolvimento, que precisam ser compilados para serem executados. Vou usar como exemplo o VLC Media Player, pois eles tem uma wiki explicando todo o processo.
Mas basicamente é sempre o mesmo “conceito”, basta baixar os arquivos, procurar pelo arquivo makefile e executar no diretório com o makefile:
# Clonar repositório em um diretório local
git clone git://git.videolan.org/vlc.git
# Entrar no diretório
cd vlc
# Executar o build
.bootstraping # isso é específico do vlc, para baixar o necessário para compilação.
.configure # isso é específico do vlc, para baixar o configurar para compilação.
make # Executa o processo de compilação.
# Tente seguir a Wiki e os arquivos "INSTALL" para compilar e instalar corretamente o programa.
Se tudo der certo o programa será compilado e os executáveis estaram no diretório “.vlc”. Veja que esse processo é meio complicado e normalmente é feito por desenvolvedores deste projeto, por pessoas que querem testar as últimas atualizações, scripts do AUR, etc.
Exercícios
Nada como uma prática para aprender todos os conceitos em algo mais tangível. Aqui estão alguns exercícios divertidos para aprender como navegar em pastas, criar e mover arquivos e muito mais!
Você pode tentar um ambiente virtual na nuvem, caso não se sinta seguro ainda. Aqui estão alguns:
- Alpine Linux Terminal: Um ambiente linux online de terminal, para você fazer testes como navegar em diretórios, criar, excluir, mover, copiar, etc.
- “Copy.sh”, Terminal Arch Linux: Um terminal linux online para praticar.
- Terminal do “Masswerk”: criado para portfólio, mas bem legal para testar comandos em um ambiente mais seguro do que a própria máquina.
Exercício 1 – O notebook do Seu Roberto
O Seu Roberto tem uma barraquinha que vende alguns CDs (totalmente legais, segundo ele) de diversos assuntos, desde CDs de música, Filmes, Séries até mesmo conteúdos educacionais. Um dia ele resolveu comprar um notebook e decidiu criar reviews sobre os conteúdos em arquivos de texto, mas aí ele pensou que seria uma ótima ideia tambem organizar os temas em suas respectivas pastas.

| Tipo | Categoria | Título | Descrição |
|---|---|---|---|
| Filme | Aventura | “A Fantástica Fábrica de Choco que Late” | “Choco é um cachorro que teve um sonho de sair de sua pequena vila para abrir sua fábrica de brinquedos. Os seus latidos dramáticos foram uma peça essencial para alcançar seu objetivo.” |
| Multimídia | Educacional | The Walking Wilber | “Wilber é o famoso mascote do GIMP, um programa bem legal de manipulação de imagens. Você consegue seguir seus passos e aprender a desenhar uma obra de arte?” |
| Música | Pop Rock | Imagine Lemons – Radioactive & Acid | “Uma música muito doida e ácida!” |
| Filme | Comédia | Homem-preguiça no preguiçaverso. | “O nível de preguiça agora é multiversal. Nesse filme, contamos com Cansado Deitado que busca mostrar para o mundo que não está para brincadeira!” |
| Filme | Aventura | Os três mosquitinhos | “Três mosquitos que passam por altas aventuras em um reino hostil e traiçoeiro.” |
Ele quer criar uma pasta “Reviews” dentro de “Documentos” e nela dividir as pastas entre Tipo e Categoria. Por exemplo, uma pasta de Filmes e dentro dela uma categoria de Comédia. Como isso seria feito?
Você pode pensar em criar primeiramente os diretórios, entrando em Documentos e criando o diretório “Reviews”.
cd ~/Documentos/
mkdir Reviews
cd Reviews
ls
Dentro dele terá os reviews, mas ainda desorganizados.
Obs: Você pode criar esses arquivos utilizando o comando touch!
REVIEW_FI_COM_HOMEMPREGUICA-PREGUICAVERSO.txt
REVIEW_FI_AVEN_FANT_FABRICA_CHOCO_LATE.txt
REVIEW_MUS_POPROCK_IMAGINE_LEMONS-RADIOCTIVEANDACID.txt
REVIEW_MULT_EDU_THE_WALKING_WILBER.txt
REVIEW_FI_AVEN_OS_TRES_MOSQUITINHOS.txt
Agora resolva isso com todos os comandos que você aprendeu. Você sabe como navegar em pastas com CD, criar pastas com MD e como mover arquivos utilizando o MV! O resultado final será algo como:

Dicas: Você pode mover arquivos rapidamente utilizando padrões dos nomes. Experimente mover todos os reviews de filmes de aventura!
Exercício 2 – Script
Criar um script é bem simples, basta ter um editor de texto.
A estrutura padrão de um bash script seria algo como:
#!/bin/bash
O “#!” (shebang) indica onde o script irá iniciar, por exemplo, em /bin/bash irá executar no bash.
O script é executado de cima para baixo, um comando e instrução de cada vez, isso significa que caso eu queira, por exemplo, criar 3 arquivos na HOME do usuário atual eu só precisaria disso:
#!/bin/bash
cd ~/
touch arquivo1.txt
touch arquivo2.txt
touch arquivo3.txt
Se eu fizer, por exemplo:
#!/bin/bash
cd ~/
touch arquivo1.txt
touch arquivo2.txt
exit
touch arquivo3.txt
Só seria criado o “arquivo1.txt” e o “arquivo2.txt”, porque depois deles há um comando de sair do terminal e as próximas instruções não foram executadas.
Depois de escrever basta salvar o arquivo em algum lugar com a extensão “.sh” (não precisa ter extensão mas fica melhor de visualizar) e caso necessário dar permissão de execução (chmod +x ./nomedoarquivo.sh).
Desafio: tente fazer o mesmo exercício 1, mas executando como um bash script!