Linux: Mini Projeto Fase 1
Este é o projeto final da Fase 1. Você vai aplicar tudo das primeiras 5 aulas — operações de arquivo, navegação de diretórios, atalhos do terminal — para construir um ambiente de desenvolvimento Linux pessoal, utilizável e bem organizado, do zero.
📋 Pré-requisitos: Você deve primeiro concluir
- Aula 1: Introdução ao Linux
- Aula 2: Instalando o Linux
- Aula 3: Fundamentos do Terminal
- Aula 4: Navegação no Sistema de Arquivos
- Aula 5: Operações com Arquivos e Diretórios
1. O Que Você Vai Aprender
- Projeto de estrutura de diretórios
- Personalização do prompt do Shell (PS1)
- Aliases e comandos de atalho
- Instalação de runtimes de linguagens de desenvolvimento
- Gerenciamento do arquivo de configuração .bashrc
2. A História do "Ambiente Bagunçado" do Alex
(1) O Problema: Arquivos Espalhados, Encontrar Coisas É Como Caça ao Tesouro
Alex vinha usando Linux há três meses, mas cada sessão era mais dolorosa que a anterior:
- Os arquivos que ele criava ficavam espalhados pelo diretório home
~ - Toda vez que precisava verificar logs tinha que digitar um comando enorme
- Quando precisava checar a versão do Java,
java -versionretornavacommand not found— ele não sabia que o JDK já estava instalado, só não estava no PATH
(2) A Solução de Padronização
Alex decidiu investir 10 minutos para organizar seu ambiente de desenvolvimento usando as habilidades da Fase 1: diretórios padrão + aliases práticos + instalação de runtimes. Depois disso, seus comandos de terminal foram de 10 toques para 2.
(3) O Benefício: Ordem Traz Eficiência
Um ambiente de desenvolvimento padronizado significa que Alex não precisa mais "pensar" onde os arquivos estão — estruturas de diretório fixas, aliases rápidos e ambientes de linguagens prontos para uso economizam pelo menos 30 minutos por dia.
3. Pontos-Chave
(1) Estrutura Padrão de Diretórios de Projeto
Um bom ambiente de desenvolvimento começa pela estrutura de diretórios. Veja uma sugestão de layout para desenvolvedores:
~/projects/ # Todos os projetos
├── web/ # Projetos web
│ ├── frontend/
│ └── backend/
├── scripts/ # Scripts de Shell
├── learning/ # Experimentos de aprendizado
├── notes/ # Anotações e documentação
└── tmp/ # Arquivos temporários (podem ser limpos a qualquer momento)
(2) PS1 — Personalizando o Prompt do Shell
A variável de ambiente PS1 (Prompt String 1) controla a aparência do prompt do terminal.
# Formato padrão
# user@host:diretorio_atual$
# Personalizações comuns
export PS1='\u@\h:\w\$ ' # user@host:/caminho/para/dir$
export PS1='\[\033[01;32m\]\u\[\033[00m\]:\w\$ ' # Com cor
export PS1='\n\[\033[1;34m\]\w\[\033[0m\]\n\$ ' # Exibição em duas linhas
ℹ️ Nota: Nas sequências de escape do PS1,
\ué o nome do usuário,\hé o hostname,\wé o caminho completo, e\Wmostra apenas o nome do diretório atual. Um prompt de duas linhas (adicionando\nao PS1) não comprime o espaço de entrada quando os caminhos são longos — altamente recomendado.
Sequências de escape comuns:
| Escape | Significado |
|---|---|
\u |
Nome do usuário atual |
\h |
Hostname (formato curto) |
\w |
Diretório de trabalho atual (caminho completo) |
\W |
Nome do diretório atual (apenas o último componente) |
\d |
Data |
\t |
Hora (formato 24 horas) |
\$ |
# (root) ou $ (usuário comum) |
\n |
Nova linha |
(3) alias — Dê um Apelido aos Seus Comandos
# Sintaxe básica
alias shortname='long-command'
# Aliases comuns
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias cls='clear'
ll em vez de ls -la, ou .. em vez de cd ... Comece com os 3 a 5 aliases mais usados, em vez de configurar dezenas de uma vez.
(4) Arquivo de Configuração .bashrc
~/.bashrc é o arquivo de configuração carregado quando o bash inicia. Toda vez que você abre uma nova janela de terminal, o bash executa todos os comandos em .bashrc.
# Editar o .bashrc
nano ~/.bashrc
# Aplicar alterações imediatamente (sem fechar e abrir o terminal)
source ~/.bashrc
(5) ▶ Exemplo: Criar Estrutura Padrão de Diretórios
# Vá para o diretório home
cd ~
# Crie e verifique os diretórios padrão
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}
# Veja o resultado
ls -la ~/projects
Saída:
TEXTtotal 28 drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 . drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 .. drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 learning drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 notes drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 scripts drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 tmp drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 web
(6) ▶ Exemplo: Personalizar o Prompt PS1 (Temporário)
# Teste diferentes prompts no terminal atual
export PS1='\u:\w\$ '
# Resultado: alice:/home/alice$
export PS1='\n\[\033[1;32m\]\u@\h\[\033[0m\]\n\w\$ '
# Resultado: (verde) username@hostname
# /caminho/atual$
Saída:
TEXTalice:/home/alice$ alice@ubuntu /home/alice$
(7) ▶ Exemplo: Adicionar Aliases (Permanentes)
# Editar o .bashrc
echo '# Meus aliases personalizados' >> ~/.bashrc
echo "alias ll='ls -la'" >> ~/.bashrc
echo "alias ..='cd ..'" >> ~/.bashrc
echo "alias cls='clear'" >> ~/.bashrc
echo "alias myip='curl -s ifconfig.me'" >> ~/.bashrc
# Aplicar as alterações
source ~/.bashrc
# Testar
ll
myip
Saída:
TEXTtotal 48 drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 . drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 .. -rw-r--r-- 1 alice alice 3771 Jul 8 10:23 .bashrc drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 projects 203.0.113.42
(8) ▶ Exemplo: Instalar Python e Node.js
# Instalar Python3 e pip
sudo apt update
sudo apt install -y python3 python3-pip
# Verificar
python3 --version
# Saída: Python 3.10.12
# Instalar Node.js (do repositório oficial NodeSource)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Verificar
node --version
# Saída: v20.12.0
npm --version
Saída:
TEXTPython 3.10.12 v20.12.0 10.5.0
(9) ▶ Exemplo: Verificar Se o Ambiente Está Pronto
echo "=== Sistema Operacional ===" && lsb_release -d
echo "=== Estrutura do Diretório Home ===" && ls -la ~/projects/
echo "=== Shell ===" && echo $SHELL
echo "=== Python ===" && python3 --version
echo "=== Node.js ===" && node --version
echo "=== Aliases ===" && alias | head -5
echo "=== PS1 ===" && echo $PS1
Saída:
TEXT=== Sistema Operacional === Description: Ubuntu 22.04.3 LTS === Estrutura do Diretório Home === total 28 drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 learning drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 notes drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 scripts drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 tmp drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 web === Shell === /bin/bash === Python === Python 3.10.12 === Node.js === v20.12.0 === Aliases === alias cls='clear' alias la='ls -A' alias ll='ls -la' === PS1 === \[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$
(10) ▶ Exemplo Abrangente: Script Completo de Configuração do Ambiente de Desenvolvimento
Salve este script como ~/setup-dev.sh e execute-o uma vez para completar toda a configuração:
#!/bin/bash
set -e # Sair imediatamente em caso de erro
echo "Configurando o ambiente de desenvolvimento Linux..."
# 1. Criar estrutura de diretórios
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}
echo "✅ Estrutura de diretórios criada"
# 2. Configurar aliases e PS1 no .bashrc
cat >> ~/.bashrc << 'EOF'
# ---- Início da configuração personalizada ----
# Aliases
alias ll='ls -la'
alias la='ls -A'
alias ..='cd ..'
alias cls='clear'
alias myip='curl -s ifconfig.me'
# Prompt PS1
export PS1='\[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ '
# ---- Fim da configuração personalizada ----
EOF
echo "✅ .bashrc configurado"
# 3. Instalar ferramentas de desenvolvimento
sudo apt update
sudo apt install -y build-essential curl wget git vim htop
echo "✅ Ferramentas de desenvolvimento instaladas"
# 4. Verificar
source ~/.bashrc
echo "=== Verificação do Ambiente ==="
echo "Python: $(python3 --version 2>/dev/null || echo 'não instalado')"
echo "Node.js: $(node --version 2>/dev/null || echo 'não instalado')"
echo "Git: $(git --version 2>/dev/null || echo 'não instalado')"
echo "✅ Tudo pronto! Execute source ~/.bashrc ou reabra seu terminal"
# Executar o script
chmod +x ~/setup-dev.sh
./setup-dev.sh
❓ Perguntas Frequentes
P: Qual é a diferença entre
.bashrce.bash_profile? R: \1
P: Aliases sobrevivem a uma reinicialização? R: Apenas na sessão atual do terminal (temporário). Para torná-los permanentes, é preciso escrever os comandos
aliasem~/.bashrc.
P: Como fazer aliases funcionarem para todos os usuários? R: Escreva-os na configuração global
/etc/bash.bashrcou em/etc/profile.d/custom.sh(requer privilégios de root).
P: O prompt PS1 pode mostrar a branch do Git? R: Sim. Use a função
__git_ps1(requer bash-completion) ou adicione$(git branch 2>/dev/null | grep '*' | sed 's/* //')ao seu PS1.
P: Como me recupero se eu quebrar meu ambiente? R: Se o
.bashrcestiver mal configurado, inicie um bash limpo combash --noprofile --norce depois edite e corrija. Ou faça um backup preventivo comcp ~/.bashrc ~/.bashrc.backup.
📖 Resumo
- Estrutura de diretórios padrão:
~/projects/{web,scripts,learning,notes,tmp} - PS1 personaliza o prompt;
aliasdá apelidos curtos aos comandos .bashrcé onde fica a configuração persistente; executesource ~/.bashrcapós alterações- Instale runtimes de desenvolvimento:
sudo apt install python3 nodejs - Você pode escrever um script
setup-dev.shpara configurar seu ambiente com um clique (é por isso que aprender Shell scripting importa)
📝 Exercícios
- Básico (Dificuldade ⭐): Crie sua estrutura pessoal de diretórios de desenvolvimento (pelo menos projects/scripts/learning) e configure 3 aliases úteis (por exemplo,
ll,..,cls) no.bashrc - Intermediário (Dificuldade ⭐⭐): Personalize o PS1 para mostrar nome do usuário, diretório atual e branch do Git, e instale um runtime de linguagem (Python ou Node.js)
- Avançado (Dificuldade ⭐⭐⭐): Escreva um script
~/projects/scripts/info.shque exiba versão do sistema, kernel, disco e memória, com tratamento de errosset -ee saída formatada