Estação de Trabalho como Código (Parte 1.5): Ferramentas Essenciais do Linux
Guia completo sobre ferramentas essenciais instaladas na Parte 1. Aprenda o propósito, exemplos práticos e comparações entre alternativas de 30+ ferramentas Linux, incluindo ferramentas de rede, busca, monitoramento, análise e utilitários. Integre com Bash para aumentar produtividade.
Tutorial Anterior: Estação de Trabalho como Código (Parte 1): Fundação com Ubuntu 24.04 e Git
Próximo Tutorial: Estação de Trabalho como Código (Parte 2): Customizando o Bash com Aliases e Funções
Introdução
Na Parte 1, você instalou diversas ferramentas essenciais do Linux. Mas simplesmente instalar não é suficiente - é importante compreender o propósito de cada uma, saber quando e como usá-las, e entender como integrá-las com seu fluxo de trabalho.
Este tutorial é um guia de referência completo sobre as ferramentas instaladas. Você aprenderá não apenas como usar cada uma, mas também quando escolher entre alternativas similares e como integrá-las com Bash para aumentar sua produtividade.
Importante: Este tutorial é complementar e opcional. Se você já conhece essas ferramentas, pode pular para a Parte 2. Se é iniciante, este guia será invaluável.
Objetivos desta Parte
- Compreender o propósito de cada ferramenta instalada
- Aprender exemplos práticos de uso
- Conhecer alternativas e quando usá-las
- Integrar ferramentas com Bash
- Criar aliases para ferramentas comuns
- Otimizar fluxo de trabalho com ferramentas
- Compreender casos de uso reais
- Construir confiança com ferramentas CLI
A quem se destina
Este tutorial é ideal para:
- Iniciantes em Linux: Compreender ferramentas essenciais
- Profissionais em Transição: Aprender novas ferramentas
- Administradores de Sistema: Referência de ferramentas
- Desenvolvedores: Otimizar fluxo de trabalho
Pré-conhecimento: Conclusão da Parte 1 é essencial.
Pré-requisitos
- Conclusão da Parte 1 (ferramentas instaladas)
- Conhecimento básico de terminal Linux
- Vontade de aprender
Tempo Estimado
⏱ 90-120 minutos
Isso inclui:
- Leitura das descrições: ~30 min
- Experimentação prática: ~40 min
- Integração com Bash: ~20 min
- Referência e consulta: ~10 min
Parte 1: Ferramentas de Edição de Texto
Vim
Descrição: O vim (Vi IMproved) é um editor de texto altamente configurável e eficiente, amplamente utilizado por programadores e administradores de sistema. Ele opera em diferentes modos (normal, inserção, visual, comando) para manipulação de texto, oferecendo recursos avançados como realce de sintaxe, macros e plugins.
Instalado em: Parte 1
Exemplo de Uso:
1
2
3
4
5
6
7
8
# Abrir arquivo para edição
$ vim meu_arquivo.txt
# Abrir em modo read-only
$ vim -R arquivo.txt
# Abrir em múltiplas janelas
$ vim -O arquivo1.txt arquivo2.txt
Dicas Profissionais:
- Use
:set numberpara mostrar números de linha - Use
:set relativenumberpara números relativos - Use
:%s/antigo/novo/gpara substituição global - Use
ddpara deletar linha,yypara copiar
Integração com Bash:
1
2
3
4
5
6
7
8
9
# Alias para abrir vim rapidamente
alias v='vim'
alias vi='vim'
# Função para editar arquivo e executar
edit_and_run() {
vim "$1"
bash "$1"
}
Alternativas:
- nano: Mais simples, melhor para iniciantes
- emacs: Mais poderoso, curva de aprendizado maior
- VS Code: Moderno, mas requer GUI
Nano
Descrição: O nano é um editor de texto simples e amigável, ideal para iniciantes. Oferece uma interface intuitiva com atalhos de teclado visíveis na tela, sendo perfeito para edições rápidas de arquivos de configuração.
Instalado em: Parte 1
Exemplo de Uso:
1
2
3
4
5
# Abrir arquivo para edição
$ nano meu_arquivo.txt
# Criar novo arquivo
$ nano novo_arquivo.txt
Atalhos Úteis:
Ctrl+X: SairCtrl+O: SalvarCtrl+W: BuscarCtrl+K: Cortar linha
Integração com Bash:
1
2
3
4
5
# Usar nano como editor padrão
export EDITOR=nano
# Alias para editar rapidamente
alias n='nano'
Parte 2: Ferramentas de Rede
curl
Descrição: O curl é uma ferramenta de linha de comando para transferir dados com sintaxe de URL. Suporta HTTP, HTTPS, FTP, FTPS, SCP, SFTP e muitos outros protocolos. Frequentemente usado para testar APIs, baixar arquivos e interagir com serviços web.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Fazer requisição GET simples
$ curl https://api.example.com/data
# Fazer requisição POST com dados
$ curl -X POST -d "param1=value1" https://api.example.com/endpoint
# Salvar resposta em arquivo
$ curl https://example.com/arquivo.zip -o arquivo.zip
# Incluir headers customizados
$ curl -H "Authorization: Bearer TOKEN" https://api.example.com/data
# Seguir redirecionamentos
$ curl -L https://example.com/redirect
# Mostrar headers de resposta
$ curl -i https://example.com
# Fazer requisição com autenticação básica
$ curl -u usuario:senha https://api.example.com/data
Dicas Profissionais:
- Use
-vpara modo verbose (debug) - Use
-Xpara especificar método HTTP - Use
-dpara enviar dados - Use
-Hpara adicionar headers
Integração com Bash:
1
2
3
4
5
6
7
8
9
# Função para testar API rapidamente
test_api() {
local url=$1
local method=${2:-GET}
curl -X "$method" -v "$url"
}
# Alias para requisições comuns
alias curl_json='curl -H "Content-Type: application/json"'
wget
Descrição: O wget é um utilitário de linha de comando para download de arquivos da web. Suporta HTTP, HTTPS e FTP, pode retomar downloads interrompidos, baixar recursivamente sites inteiros e trabalhar em segundo plano.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Download simples
$ wget https://example.com/arquivo.zip
# Download com nome customizado
$ wget https://example.com/arquivo.zip -O meu_arquivo.zip
# Retomar download interrompido
$ wget -c https://example.com/arquivo.zip
# Baixar recursivamente um site
$ wget -r https://example.com
# Baixar com limite de velocidade
$ wget --limit-rate=100k https://example.com/arquivo.zip
# Baixar múltiplos arquivos
$ wget https://example.com/arquivo1.zip https://example.com/arquivo2.zip
Dicas Profissionais:
- Use
-cpara retomar downloads - Use
-rpara download recursivo - Use
--limit-ratepara limitar velocidade - Use
-bpara download em background
Integração com Bash:
1
2
3
4
5
6
7
8
9
# Função para download com progresso
download_file() {
local url=$1
local output=${2:-$(basename "$url")}
wget -c "$url" -O "$output"
}
# Alias para download rápido
alias wget_bg='wget -b'
Comparação: curl vs wget
| Aspecto | curl | wget |
|---|---|---|
| Protocolos | Muitos | HTTP/HTTPS/FTP |
| APIs | Excelente | Bom |
| Download Recursivo | Não | Sim |
| Retomar Download | Sim | Sim |
| Sintaxe | Complexa | Simples |
| Uso | APIs, testes | Downloads, mirrors |
dig
Descrição: O dig (Domain Information Groper) é uma ferramenta para consultar servidores DNS. Fornece informações detalhadas sobre registros DNS, sendo essencial para diagnóstico de problemas de rede e configuração de domínios.
Instalado em: Parte 1 (via dnsutils)
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Consultar registro A (IPv4)
$ dig example.com
# Consultar tipo específico de registro
$ dig example.com MX # Mail servers
$ dig example.com NS # Name servers
$ dig example.com CNAME # Aliases
# Consultar servidor DNS específico
$ dig @8.8.8.8 example.com
# Modo curto (apenas resultado)
$ dig +short example.com
# Rastrear caminho de resolução
$ dig +trace example.com
Dicas Profissionais:
- Use
+shortpara saída concisa - Use
+tracepara entender resolução - Use
@servidorpara consultar servidor específico - Use tipos de registro específicos (A, MX, NS, CNAME)
Integração com Bash:
1
2
3
4
5
6
7
8
9
# Função para verificar DNS rapidamente
check_dns() {
local domain=$1
dig +short "$domain"
}
# Alias para consultas comuns
alias dig_mx='dig +short MX'
alias dig_ns='dig +short NS'
nmap
Descrição: O nmap (Network Mapper) é uma ferramenta de exploração de rede e auditoria de segurança. Descobre hosts e serviços em uma rede, detecta portas abertas, identifica sistemas operacionais e versões de serviços.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Escanear portas abertas
$ nmap example.com
# Escanear portas específicas
$ nmap -p 80,443,22 example.com
# Escanear faixa de portas
$ nmap -p 1-1000 example.com
# Detecção de versão
$ nmap -sV example.com
# Detecção de SO
$ nmap -O example.com
# Escanear rede inteira
$ nmap 192.168.1.0/24
# Modo agressivo (mais informações)
$ nmap -A example.com
Dicas Profissionais:
- Use
-sVpara detectar versões - Use
-Opara detectar SO - Use
-Apara modo agressivo - Use
-p-para escanear todas as portas
Aviso: Use nmap apenas em redes que você possui ou tem permissão. Uso não autorizado é ilegal.
Integração com Bash:
1
2
3
4
5
# Função para escanear portas comuns
scan_ports() {
local host=$1
nmap -p 22,80,443,3306,5432 "$host"
}
iftop
Descrição: O iftop é uma ferramenta de monitoramento de rede em tempo real. Exibe o uso da largura de banda em uma interface de rede, mostrando quais hosts estão consumindo mais dados.
Instalado em: Parte 1
Exemplo de Uso:
1
2
3
4
5
6
7
8
# Monitorar tráfego na interface padrão
$ sudo iftop
# Monitorar interface específica
$ sudo iftop -i eth0
# Modo não-interativo
$ sudo iftop -n
Atalhos Úteis:
n: Alternar nomes/IPss: Alternar escalap: Alternar portasq: Sair
Parte 3: Ferramentas de Busca e Localização
fzf
Descrição: O fzf (fuzzy finder) é um localizador de arquivos interativo e de uso geral. Permite pesquisar e selecionar arquivos ou diretórios de forma rápida e eficiente usando correspondência difusa (fuzzy matching).
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
# Buscar arquivo interativamente
$ fzf
# Abrir arquivo selecionado com vim
$ vim $(fzf)
# Buscar em diretório específico
$ fzf --preview 'cat {}'
# Integração com histórico bash
$ history | fzf
Integração com Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Função para abrir arquivo com fzf
fopen() {
local file
file=$(fzf --preview 'cat {}')
[ -n "$file" ] && vim "$file"
}
# Alias para buscar e abrir
alias ff='fzf --preview "cat {}"'
# Função para buscar em histórico
fhistory() {
eval "$(history | fzf --tac | sed 's/^[[:space:]]*[0-9]\+[[:space:]]\+//')"
}
fd
Descrição: O fd (fd-find) é uma alternativa mais rápida e amigável ao comando find. Oferece sintaxe mais simples, saída colorida por padrão, e é otimizado para velocidade.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Encontrar todos os arquivos .log
$ fd .log
# Encontrar diretórios
$ fd -t d nome_diretorio
# Encontrar arquivos com padrão regex
$ fd 'test.*\.py'
# Executar comando em cada resultado
$ fd .log -x rm {}
# Limitar profundidade
$ fd -d 2 arquivo.txt
Comparação: find vs fd
| Aspecto | find | fd |
|---|---|---|
| Sintaxe | Complexa | Simples |
| Velocidade | Lenta | Rápida |
| Cores | Não | Sim |
| Padrão | Glob | Regex |
| Curva de Aprendizado | Alta | Baixa |
Integração com Bash:
1
2
3
4
5
6
7
8
9
10
11
# Alias para buscas comuns
alias fds='fd -t f' # Apenas arquivos
alias fdd='fd -t d' # Apenas diretórios
alias fdl='fd .log' # Arquivos de log
# Função para encontrar e editar
fdedit() {
local file
file=$(fd "$1" | fzf)
[ -n "$file" ] && vim "$file"
}
ripgrep
Descrição: O ripgrep (rg) é uma ferramenta de busca de linha de comando que combina usabilidade do grep com velocidade. Otimizado para pesquisar recursivamente diretórios em busca de padrões regex.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Buscar string em arquivos
$ rg "minha_funcao"
# Buscar em tipo de arquivo específico
$ rg "minha_funcao" -g "*.py"
# Buscar com contexto
$ rg "minha_funcao" -C 3
# Buscar case-insensitive
$ rg -i "funcao"
# Contar ocorrências
$ rg "funcao" --count
# Listar apenas nomes de arquivo
$ rg "funcao" -l
Comparação: grep vs rg
| Aspecto | grep | rg |
|---|---|---|
| Velocidade | Lenta | Muito rápida |
| Sintaxe | Simples | Simples |
| Recursivo | Com -r | Por padrão |
| Cores | Não | Sim |
| Ignora .gitignore | Não | Sim |
Integração com Bash:
1
2
3
4
5
6
7
8
9
10
# Alias para buscas comuns
alias rg_py='rg -g "*.py"'
alias rg_js='rg -g "*.js"'
# Função para buscar e editar
rgedit() {
local file
file=$(rg "$1" -l | fzf)
[ -n "$file" ] && vim "$file"
}
plocate
Descrição: O plocate é uma alternativa mais rápida ao locate para encontrar arquivos no sistema de arquivos. Usa um banco de dados pré-indexado, tornando buscas extremamente rápidas.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
# Encontrar arquivo por nome
$ plocate config
# Busca case-insensitive
$ plocate -i CONFIG
# Contar ocorrências
$ plocate -c config
# Atualizar banco de dados
$ sudo updatedb
Integração com Bash:
1
2
3
4
5
6
7
8
9
# Alias para buscas rápidas
alias locate='plocate'
# Função para encontrar e abrir
plocate_open() {
local file
file=$(plocate "$1" | fzf)
[ -n "$file" ] && vim "$file"
}
Parte 4: Ferramentas de Monitoramento e Análise
btop
Descrição: O btop é um monitor de recursos do sistema em tempo real, interativo e com interface colorida. Exibe informações sobre CPU, memória, discos, rede e processos.
Instalado em: Parte 1
Exemplo de Uso:
1
2
3
4
5
# Iniciar monitor
$ btop
# Modo não-interativo
$ btop -b
Atalhos Úteis:
q: Sairp: Alternar processosm: Alternar memórian: Alternar rede
Integração com Bash:
1
2
3
# Alias para monitorar
alias monitor='btop'
alias top='btop'
strace
Descrição: O strace é uma ferramenta de diagnóstico que monitora chamadas de sistema e sinais recebidos por um processo. Útil para depurar programas e entender interações com o kernel.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
# Rastrear chamadas de sistema
$ strace ls
# Rastrear processo em execução
$ strace -p PID
# Salvar saída em arquivo
$ strace -o trace.txt ls
# Contar chamadas de sistema
$ strace -c ls
Dicas Profissionais:
- Use
-cpara resumo de chamadas - Use
-epara filtrar chamadas específicas - Use
-opara salvar em arquivo
jq
Descrição: O jq é um processador JSON leve e flexível de linha de comando. Permite fatiar, filtrar, mapear e transformar dados JSON com facilidade.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Extrair campo específico
$ echo '{"name": "Alice", "age": 30}' | jq '.name'
# Extrair múltiplos campos
$ echo '{"name": "Alice", "age": 30}' | jq '.name, .age'
# Filtrar array
$ echo '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]' | jq '.[] | select(.age > 26)'
# Transformar estrutura
$ echo '{"name": "Alice"}' | jq '{person: .name}'
# Formatar JSON
$ curl https://api.example.com/data | jq '.'
Integração com Bash:
1
2
3
4
5
6
7
8
9
# Função para parsear JSON de API
get_json_field() {
local url=$1
local field=$2
curl -s "$url" | jq "$field"
}
# Alias para formatar JSON
alias jq_format='jq "."'
bat
Descrição: O bat é um clone do cat com superpoderes. Oferece realce de sintaxe, integração com git, numeração de linhas e paginação automática.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
# Visualizar arquivo com realce
$ bat meu_script.py
# Mostrar números de linha
$ bat -n meu_script.py
# Mostrar apenas linhas específicas
$ bat --line-range 1:10 meu_script.py
# Usar como paginador
$ man bash | bat
Integração com Bash:
1
2
3
4
5
6
7
8
9
10
# Usar bat como paginador padrão
export PAGER="bat"
# Alias para substituir cat
alias cat='bat'
# Função para visualizar com números
view_lines() {
bat -n "$1"
}
Parte 5: Ferramentas de Visualização e Formatação
eza
Descrição: O eza é um substituto moderno para ls. Oferece saída colorida, visualização de ícones, informações detalhadas e melhor legibilidade.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Listar com detalhes
$ eza -l
# Listar recursivamente
$ eza -R
# Mostrar árvore de diretórios
$ eza --tree
# Listar com ícones
$ eza -l --icons
# Ordenar por tamanho
$ eza -lS
Integração com Bash:
1
2
3
4
5
6
7
8
9
10
# Alias para substituir ls
alias ls='eza'
alias ll='eza -l'
alias la='eza -la'
alias tree='eza --tree'
# Função para listar com filtro
lsgrep() {
eza -l | grep "$1"
}
grc
Descrição: O grc (Generic Colouriser) é um wrapper que adiciona cores à saída de comandos de linha de comando, tornando logs e saídas mais legíveis.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
# Colorir saída de ping
$ grc ping google.com
# Colorir saída de traceroute
$ grc traceroute google.com
# Colorir saída de ps
$ grc ps aux
# Colorir saída de netstat
$ grc netstat -an
Integração com Bash:
1
2
3
4
5
# Alias para comandos comuns
alias ping='grc ping'
alias traceroute='grc traceroute'
alias ps='grc ps'
alias netstat='grc netstat'
Parte 6: Ferramentas de Referência Rápida
tldr
Descrição: O tldr (Too Long; Didn’t Read) é uma coleção de páginas de manual simplificadas e exemplos práticos para comandos de linha de comando.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
# Ver exemplos de comando
$ tldr tar
# Ver exemplos de outro comando
$ tldr find
# Atualizar banco de dados
$ tldr --update
Integração com Bash:
1
2
3
4
5
6
7
# Alias para referência rápida
alias help='tldr'
# Função para buscar comando
cmd_help() {
tldr "$1" || man "$1"
}
Parte 7: Ferramentas de Hardware e Sistema
lshw
Descrição: O lshw (list hardware) fornece informações detalhadas sobre a configuração de hardware do sistema, incluindo memória, CPU, placa-mãe, adaptadores de rede e dispositivos de armazenamento.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
# Listar todo hardware
$ sudo lshw
# Formato HTML
$ sudo lshw -html > hardware.html
# Apenas informações de CPU
$ sudo lshw -C cpu
# Apenas informações de memória
$ sudo lshw -C memory
hwinfo
Descrição: O hwinfo é uma ferramenta para detectar hardware presente no sistema, fornecendo saída detalhada sobre componentes.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
# Resumo do hardware
$ hwinfo --short
# Informações detalhadas
$ hwinfo
# Apenas CPU
$ hwinfo --cpu
# Apenas memória
$ hwinfo --memory
fwupd
Descrição: O fwupd é um daemon para gerenciamento de firmware em sistemas Linux, permitindo atualizar firmware de dispositivos de hardware.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
# Verificar atualizações
$ fwupdmgr refresh && fwupdmgr get-updates
# Atualizar firmware
$ fwupdmgr update
# Listar dispositivos
$ fwupdmgr get-devices
ethtool
Descrição: O ethtool é uma ferramenta para consultar e controlar configurações de drivers de dispositivos de rede Ethernet.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
# Informações sobre interface
$ ethtool eth0
# Velocidade de conexão
$ ethtool eth0 | grep Speed
# Estatísticas
$ ethtool -S eth0
Parte 8: Ferramentas de Sincronização e Transferência
rsync
Descrição: O rsync é uma ferramenta de sincronização de arquivos rápida e versátil. Copia e sincroniza arquivos localmente e remotamente, minimizando transferência de dados.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Sincronizar diretório local
$ rsync -avz /origem/ /destino/
# Sincronizar com servidor remoto
$ rsync -avz /origem/ usuario@host:/destino/
# Sincronizar com deleção
$ rsync -avz --delete /origem/ /destino/
# Mostrar progresso
$ rsync -avz --progress /origem/ /destino/
# Backup com timestamp
$ rsync -avz /origem/ /backup/backup-$(date +%Y%m%d)/
Integração com Bash:
1
2
3
4
5
6
7
8
9
# Função para backup automático
backup_dir() {
local source=$1
local dest=$2
rsync -avz --delete "$source" "$dest/backup-$(date +%Y%m%d)/"
}
# Alias para sincronização
alias sync_backup='rsync -avz --delete'
Parte 9: Ferramentas de Análise de Rede
traceroute
Descrição: O traceroute exibe a rota (caminho) e mede atrasos de trânsito de pacotes através de uma rede IP. Lista todos os roteadores pelos quais um pacote passa.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
# Rastrear rota para domínio
$ traceroute google.com
# Usar UDP em vez de ICMP
$ traceroute -U google.com
# Limitar número de hops
$ traceroute -m 10 google.com
whois
Descrição: O whois permite obter informações sobre domínios da internet, endereços IP e blocos de rede, incluindo registrante, contato e servidores de nome.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
# Informações de domínio
$ whois example.com
# Informações de IP
$ whois 8.8.8.8
# Apenas registrante
$ whois example.com | grep Registrant
ipcalc
Descrição: O ipcalc é uma ferramenta para cálculos de rede IP, calculando endereço de broadcast, máscara de rede, número de hosts e faixa de endereços.
Instalado em: Parte 1
Exemplos de Uso:
1
2
3
4
5
6
7
8
# Calcular informações de rede
$ ipcalc 192.168.1.1/24
# Apenas endereço de broadcast
$ ipcalc -b 192.168.1.1/24
# Apenas máscara de rede
$ ipcalc -m 192.168.1.1/24
Integração com Bash:
1
2
3
4
5
6
7
# Função para calcular rede rapidamente
calc_net() {
ipcalc "$1"
}
# Alias para cálculos comuns
alias ipcalc_24='ipcalc -m /24'
Parte 10: Tabela Comparativa de Alternativas
Ferramentas de Busca
| Ferramenta | Velocidade | Sintaxe | Cores | Recursivo | Melhor Para |
|---|---|---|---|---|---|
| find | Lenta | Complexa | Não | Sim | Buscas complexas |
| fd | Rápida | Simples | Sim | Sim | Buscas simples |
| locate | Muito rápida | Simples | Não | N/A | Buscas por nome |
| plocate | Muito rápida | Simples | Não | N/A | Buscas por nome |
Ferramentas de Grep
| Ferramenta | Velocidade | Recursivo | Ignora .gitignore | Cores | Melhor Para |
|---|---|---|---|---|---|
| grep | Lenta | Com -r | Não | Não | Padrão |
| ack | Rápida | Por padrão | Sim | Sim | Código |
| ag | Muito rápida | Por padrão | Sim | Sim | Código |
| rg | Muito rápida | Por padrão | Sim | Sim | Código |
Ferramentas de Listagem
| Ferramenta | Cores | Ícones | Árvore | Detalhes | Melhor Para |
|---|---|---|---|---|---|
| ls | Não | Não | Não | Básicos | Padrão |
| exa | Sim | Não | Sim | Completos | Moderno |
| eza | Sim | Sim | Sim | Completos | Moderno |
| tree | Não | Não | Sim | Básicos | Árvore |
Parte 11: Integração com Bash - Exemplos Práticos
#!/bin/bash ################################################################################
.bash_functions
#
Arquivo de funções personalizadas para Bash
Organizado por categoria para facilitar manutenção e reutilização
#
Uso: Adicione ao final do ~/.bashrc:
if [ -f ~/.bash_functions ]; then
source ~/.bash_functions
fi
#
Autor: Workspace as Code
Data: 2026-02-21
################################################################################
============================================================================
FUNÇÕES DE BUSCA E LOCALIZAÇÃO
============================================================================
Função: smart_search
Descrição: Busca inteligente usando ripgrep ou grep, com fzf para seleção
Uso: smart_search “termo_de_busca”
Exemplo: smart_search “minha_funcao”
smart_search() { local search_term=$1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if [ -z "$search_term" ]; then
echo "Uso: smart_search <termo>"
return 1
fi
local file
# Tentar com ripgrep primeiro (mais rápido)
if command -v rg &> /dev/null; then
file=$(rg "$search_term" -l | fzf --preview "bat {}" --preview-window=right:50%)
elif command -v grep &> /dev/null; then
file=$(grep -r "$search_term" . -l 2>/dev/null | fzf --preview "cat {}")
else
echo "Erro: ripgrep ou grep não encontrado"
return 1
fi
if [ -n "$file" ]; then
vim "$file"
else
echo "Nenhum arquivo selecionado"
return 1
fi }
Função: fdedit
Descrição: Encontra arquivo com fd e abre com vim
Uso: fdedit [padrão]
Exemplo: fdedit “*.py”
fdedit() { local pattern=${1:-.}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if ! command -v fd &> /dev/null; then
echo "Erro: fd não encontrado"
return 1
fi
local file
file=$(fd "$pattern" | fzf --preview "bat {}" --preview-window=right:50%)
if [ -n "$file" ]; then
vim "$file"
else
echo "Nenhum arquivo selecionado"
return 1
fi }
Função: rgedit
Descrição: Busca com ripgrep e abre arquivo com vim
Uso: rgedit “termo” [tipo_arquivo]
Exemplo: rgedit “funcao” “*.py”
rgedit() { local search_term=$1 local file_type=${2:-.}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if [ -z "$search_term" ]; then
echo "Uso: rgedit <termo> [tipo_arquivo]"
return 1
fi
if ! command -v rg &> /dev/null; then
echo "Erro: ripgrep não encontrado"
return 1
fi
local file
file=$(rg "$search_term" -g "$file_type" -l | fzf --preview "bat {}" --preview-window=right:50%)
if [ -n "$file" ]; then
vim "$file"
else
echo "Nenhum arquivo encontrado"
return 1
fi }
Função: plocate_open
Descrição: Localiza arquivo com plocate e abre com vim
Uso: plocate_open “nome_arquivo”
Exemplo: plocate_open “config”
plocate_open() { local search_term=$1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if [ -z "$search_term" ]; then
echo "Uso: plocate_open <termo>"
return 1
fi
if ! command -v plocate &> /dev/null; then
echo "Erro: plocate não encontrado"
return 1
fi
local file
file=$(plocate "$search_term" | fzf --preview "bat {}" --preview-window=right:50%)
if [ -n "$file" ]; then
vim "$file"
else
echo "Nenhum arquivo encontrado"
return 1
fi }
Função: fopen
Descrição: Abre arquivo com fzf e vim
Uso: fopen
Exemplo: fopen
fopen() { if ! command -v fzf &> /dev/null; then echo “Erro: fzf não encontrado” return 1 fi
1
2
3
4
5
6
7
8
9
local file
file=$(fzf --preview "bat {}" --preview-window=right:50%)
if [ -n "$file" ]; then
vim "$file"
else
echo "Nenhum arquivo selecionado"
return 1
fi }
Função: lsgrep
Descrição: Lista arquivos com filtro usando eza e grep
Uso: lsgrep “padrão”
Exemplo: lsgrep “log”
lsgrep() { local pattern=$1
1
2
3
4
5
6
7
8
9
10
if [ -z "$pattern" ]; then
echo "Uso: lsgrep <padrão>"
return 1
fi
if command -v eza &> /dev/null; then
eza -l | grep "$pattern"
else
ls -l | grep "$pattern"
fi }
============================================================================
FUNÇÕES DE REDE
============================================================================
Função: test_api
Descrição: Testa API com curl, suportando diferentes métodos HTTP
Uso: test_api [método]
Exemplo: test_api “https://api.example.com/data” “GET”
test_api() { local url=$1 local method=${2:-GET}
1
2
3
4
5
6
7
8
9
10
11
12
if [ -z "$url" ]; then
echo "Uso: test_api <url> [método]"
return 1
fi
if ! command -v curl &> /dev/null; then
echo "Erro: curl não encontrado"
return 1
fi
echo "Testando $method $url..."
curl -X "$method" -v "$url" }
Função: check_dns
Descrição: Verifica registros DNS de um domínio
Uso: check_dns [tipo]
Exemplo: check_dns “example.com” “MX”
check_dns() { local domain=$1 local type=${2:-A}
1
2
3
4
5
6
7
8
9
10
11
12
if [ -z "$domain" ]; then
echo "Uso: check_dns <domínio> [tipo]"
return 1
fi
if ! command -v dig &> /dev/null; then
echo "Erro: dig não encontrado"
return 1
fi
echo "Consultando $type para $domain..."
dig +short "$domain" "$type" }
Função: scan_ports
Descrição: Escaneia portas comuns em um host
Uso: scan_ports
Exemplo: scan_ports “example.com”
scan_ports() { local host=$1
1
2
3
4
5
6
7
8
9
10
11
12
if [ -z "$host" ]; then
echo "Uso: scan_ports <host>"
return 1
fi
if ! command -v nmap &> /dev/null; then
echo "Erro: nmap não encontrado"
return 1
fi
echo "Escaneando portas comuns em $host..."
nmap -p 22,80,443,3306,5432 "$host" }
Função: calc_net
Descrição: Calcula informações de rede para um endereço IP/máscara
Uso: calc_net <ip/máscara>
Exemplo: calc_net “192.168.1.1/24”
calc_net() { local network=$1
1
2
3
4
5
6
7
8
9
10
11
if [ -z "$network" ]; then
echo "Uso: calc_net <ip/máscara>"
return 1
fi
if ! command -v ipcalc &> /dev/null; then
echo "Erro: ipcalc não encontrado"
return 1
fi
ipcalc "$network" }
Função: get_json_field
Descrição: Extrai campo específico de JSON de uma API
Uso: get_json_field
Exemplo: get_json_field “https://api.example.com/data” “.name”
get_json_field() { local url=$1 local field=$2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if [ -z "$url" ] || [ -z "$field" ]; then
echo "Uso: get_json_field <url> <campo>"
return 1
fi
if ! command -v curl &> /dev/null; then
echo "Erro: curl não encontrado"
return 1
fi
if ! command -v jq &> /dev/null; then
echo "Erro: jq não encontrado"
return 1
fi
curl -s "$url" | jq "$field" }
============================================================================
FUNÇÕES DE ARQUIVO E SINCRONIZAÇÃO
============================================================================
Função: backup
Descrição: Faz backup de um diretório com timestamp
Uso: backup [destino]
Exemplo: backup ~/Documentos ~/Backups
backup() { local source=$1 local dest=${2:-.}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if [ -z "$source" ]; then
echo "Uso: backup <origem> [destino]"
return 1
fi
if ! command -v rsync &> /dev/null; then
echo "Erro: rsync não encontrado"
return 1
fi
local backup_dir="$dest/backup-$(date +%Y%m%d-%H%M%S)"
echo "Iniciando backup de $source para $backup_dir..."
rsync -avz --progress "$source" "$backup_dir"
if [ $? -eq 0 ]; then
echo "Backup concluído com sucesso!"
else
echo "Erro durante o backup"
return 1
fi }
Função: backup_dir
Descrição: Sincroniza diretório com backup automático
Uso: backup_dir
Exemplo: backup_dir ~/Documentos ~/Backups
backup_dir() { local source=$1 local dest=$2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if [ -z "$source" ] || [ -z "$dest" ]; then
echo "Uso: backup_dir <origem> <destino>"
return 1
fi
if ! command -v rsync &> /dev/null; then
echo "Erro: rsync não encontrado"
return 1
fi
local backup_dir="$dest/backup-$(date +%Y%m%d-%H%M%S)"
echo "Sincronizando $source para $backup_dir..."
rsync -avz --delete "$source" "$backup_dir"
if [ $? -eq 0 ]; then
echo "Sincronização concluída!"
else
echo "Erro durante sincronização"
return 1
fi }
Função: download_file
Descrição: Baixa arquivo com wget, com suporte a retomada
Uso: download_file [nome_saída]
Exemplo: download_file “https://example.com/arquivo.zip” “meu_arquivo.zip”
download_file() { local url=$1 local output=${2:-$(basename “$url”)}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if [ -z "$url" ]; then
echo "Uso: download_file <url> [nome_saída]"
return 1
fi
if ! command -v wget &> /dev/null; then
echo "Erro: wget não encontrado"
return 1
fi
echo "Baixando $url para $output..."
wget -c "$url" -O "$output"
if [ $? -eq 0 ]; then
echo "Download concluído!"
else
echo "Erro durante download"
return 1
fi }
Função: sync_backup
Descrição: Sincroniza diretório com deleção de arquivos removidos
Uso: sync_backup
Exemplo: sync_backup ~/Documentos ~/Backups
sync_backup() { local source=$1 local dest=$2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if [ -z "$source" ] || [ -z "$dest" ]; then
echo "Uso: sync_backup <origem> <destino>"
return 1
fi
if ! command -v rsync &> /dev/null; then
echo "Erro: rsync não encontrado"
return 1
fi
echo "Sincronizando $source para $dest (com deleção)..."
rsync -avz --delete --progress "$source" "$dest"
if [ $? -eq 0 ]; then
echo "Sincronização concluída!"
else
echo "Erro durante sincronização"
return 1
fi }
============================================================================
FUNÇÕES DE SISTEMA E MONITORAMENTO
============================================================================
Função: system_info
Descrição: Exibe informações completas do sistema
Uso: system_info
Exemplo: system_info
system_info() { echo “╔════════════════════════════════════════════════════════════════╗” echo “║ INFORMAÇÕES DO SISTEMA ║” echo “╚════════════════════════════════════════════════════════════════╝”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
echo ""
echo "=== CPU Info ==="
if command -v lshw &> /dev/null; then
sudo lshw -C cpu 2>/dev/null | grep -E "product|cores|threads" || echo "Sem informações"
else
echo "lshw não encontrado"
fi
echo ""
echo "=== Memory Info ==="
if command -v free &> /dev/null; then
free -h
else
echo "free não encontrado"
fi
echo ""
echo "=== Disk Usage ==="
if command -v df &> /dev/null; then
df -h | awk 'NR==1 || NR>1 {print}'
else
echo "df não encontrado"
fi
echo ""
echo "=== Network Interfaces ==="
if command -v ip &> /dev/null; then
ip -s link show | head -20
else
echo "ip não encontrado"
fi
echo ""
echo "=== Uptime ==="
uptime }
Função: cmd_help
Descrição: Mostra ajuda para um comando (tldr ou man)
Uso: cmd_help
Exemplo: cmd_help “tar”
cmd_help() { local cmd=$1
1
2
3
4
5
6
7
8
9
10
11
12
13
if [ -z "$cmd" ]; then
echo "Uso: cmd_help <comando>"
return 1
fi
if command -v tldr &> /dev/null; then
tldr "$cmd"
elif command -v man &> /dev/null; then
man "$cmd"
else
echo "Erro: tldr ou man não encontrado"
return 1
fi }
Função: view_lines
Descrição: Visualiza arquivo com números de linha usando bat
Uso: view_lines
Exemplo: view_lines “meu_script.py”
view_lines() { local file=$1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if [ -z "$file" ]; then
echo "Uso: view_lines <arquivo>"
return 1
fi
if [ ! -f "$file" ]; then
echo "Erro: arquivo não encontrado"
return 1
fi
if command -v bat &> /dev/null; then
bat -n "$file"
else
cat -n "$file"
fi }
============================================================================
FUNÇÕES DE DESENVOLVIMENTO
============================================================================
Função: edit_and_run
Descrição: Edita arquivo com vim e executa como script bash
Uso: edit_and_run
Exemplo: edit_and_run “meu_script.sh”
edit_and_run() { local file=$1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if [ -z "$file" ]; then
echo "Uso: edit_and_run <arquivo>"
return 1
fi
if ! command -v vim &> /dev/null; then
echo "Erro: vim não encontrado"
return 1
fi
vim "$file"
if [ -f "$file" ]; then
echo ""
echo "Executando $file..."
bash "$file"
fi }
Função: fhistory
Descrição: Busca no histórico bash com fzf
Uso: fhistory
Exemplo: fhistory
fhistory() { if ! command -v fzf &> /dev/null; then echo “Erro: fzf não encontrado” return 1 fi
1
2
3
4
5
6
local cmd
cmd=$(history | fzf --tac | sed 's/^[[:space:]]*[0-9]\+[[:space:]]\+//')
if [ -n "$cmd" ]; then
eval "$cmd"
fi }
============================================================================
FUNÇÕES DE PRODUTIVIDADE
============================================================================
Função: mkcd
Descrição: Cria diretório e entra nele
Uso: mkcd
Exemplo: mkcd “novo_projeto”
mkcd() { local dir=$1
1
2
3
4
5
6
if [ -z "$dir" ]; then
echo "Uso: mkcd <diretório>"
return 1
fi
mkdir -p "$dir" && cd "$dir" || return 1 }
Função: cd_git_root
Descrição: Muda para raiz do repositório git
Uso: cd_git_root
Exemplo: cd_git_root
cd_git_root() { if ! command -v git &> /dev/null; then echo “Erro: git não encontrado” return 1 fi
1
2
3
4
5
6
7
8
9
10
local root
root=$(git rev-parse --show-toplevel 2>/dev/null)
if [ -n "$root" ]; then
cd "$root" || return 1
echo "Mudado para raiz do repositório: $root"
else
echo "Erro: não está em um repositório git"
return 1
fi }
Função: extract
Descrição: Extrai arquivo compactado (suporta múltiplos formatos)
Uso: extract
Exemplo: extract “arquivo.tar.gz”
extract() { local file=$1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
if [ -z "$file" ]; then
echo "Uso: extract <arquivo>"
return 1
fi
if [ ! -f "$file" ]; then
echo "Erro: arquivo não encontrado"
return 1
fi
case "$file" in
*.tar.gz|*.tgz)
tar -xzf "$file"
;;
*.tar.bz2|*.tbz2)
tar -xjf "$file"
;;
*.tar.xz|*.txz)
tar -xJf "$file"
;;
*.tar)
tar -xf "$file"
;;
*.zip)
unzip "$file"
;;
*.rar)
unrar x "$file"
;;
*.7z)
7z x "$file"
;;
*)
echo "Formato não suportado: $file"
return 1
;;
esac
echo "Arquivo extraído com sucesso!" }
Função: compress
Descrição: Compacta arquivo ou diretório
Uso: compress [formato]
Exemplo: compress “meu_diretório” “tar.gz”
compress() { local source=$1 local format=${2:-tar.gz}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
if [ -z "$source" ]; then
echo "Uso: compress <arquivo_ou_diretório> [formato]"
echo "Formatos suportados: tar.gz, tar.bz2, tar.xz, zip"
return 1
fi
if [ ! -e "$source" ]; then
echo "Erro: arquivo ou diretório não encontrado"
return 1
fi
local output="${source}.${format}"
case "$format" in
tar.gz|tgz)
tar -czf "$output" "$source"
;;
tar.bz2|tbz2)
tar -cjf "$output" "$source"
;;
tar.xz|txz)
tar -cJf "$output" "$source"
;;
tar)
tar -cf "$output" "$source"
;;
zip)
zip -r "$output" "$source"
;;
*)
echo "Formato não suportado: $format"
return 1
;;
esac
echo "Arquivo compactado: $output" }
============================================================================
FIM DO ARQUIVO .bash_functions
============================================================================
Parte 12: Próximos Passos
Consolidação
- Experimente cada ferramenta:
- Dedique tempo para testar cada uma
- Leia documentação com
tldr - Crie aliases para as que usar frequentemente
- Integre com Bash:
- Adicione aliases ao
~/.bashrc - Crie funções para tarefas comuns
- Teste integração com outras ferramentas
- Adicione aliases ao
- Customize seu Ambiente:
- Escolha suas ferramentas favoritas
- Configure cores e temas
- Otimize para seu fluxo de trabalho
Aprofundamento
- Parte 2: Customize Bash com aliases e funções
- Parte 3: Configure Vim para edição avançada
- Parte 3.5: Use Tmux com múltiplas conexões SSH
Conclusão
Você agora compreende o propósito de cada ferramenta instalada na Parte 1. Mais importante, você sabe:
✓ Quando usar cada ferramenta ✓ Como integrá-las com Bash ✓ Alternativas e quando escolhê-las ✓ Exemplos práticos de uso ✓ Como otimizar seu fluxo de trabalho
Essas ferramentas são a base de um ambiente CLI profissional. Domine-as e você será muito mais produtivo.
Recursos Adicionais
Documentação Oficial
Tutoriais Recomendados
Comunidades
Tutorial Anterior: Estação de Trabalho como Código (Parte 1): Fundação com Ubuntu 24.04 e Git
Próximo Tutorial: Estação de Trabalho como Código (Parte 2): Customizando o Bash com Aliases e Funções
Fim da Parte 1.5
Domine as ferramentas essenciais do Linux e construa um ambiente CLI profissional.