Introdução aos Comandos Linux Concatenados
O Linux é um sistema operacional extremamente poderoso, que oferece uma vasta gama de ferramentas de linha de comando para automatizar, otimizar e diagnosticar diversas operações do sistema. Uma das maiores vantagens do Linux é a capacidade de concatenar comandos usando pipes (|) e redirecionamentos, permitindo que você construa fluxos de trabalho complexos e eficientes com uma única linha de comando.
A concatenação de comandos permite que você use a saída de um comando como entrada de outro, simplificando tarefas como filtragem de dados, manipulação de arquivos, monitoramento de logs, gerenciamento de processos e muito mais. Esses exemplos foram criados para demonstrar como é possível combinar utilitários padrão do Linux para realizar tarefas complexas de forma simples e eficaz.
Nesta página, você encontrará exemplos práticos e criativos de como concatenar comandos no Linux para resolver problemas comuns e avançados, otimizando o seu trabalho como administrador de sistemas ou desenvolvedor. Desde operações básicas até tarefas altamente especializadas, você verá como o poder da linha de comando pode transformar sua maneira de lidar com o sistema operacional.
Explore as seções abaixo e descubra novas formas de melhorar seu fluxo de trabalho no Linux!
- Monitorar modificações em tempo real e enviar notificação:
inotifywait -m /caminho/para/diretorio | while read path action file; do notify-send "Arquivo modificado: $file"; done
- Usa `inotifywait` para monitorar alterações em um diretório e `notify-send` para enviar uma notificação a cada mudança.
- Renomear múltiplos arquivos em massa:
ls *.txt | sed 'p;s/.txt/.bak/' | xargs -n2 mv
- Lista arquivos `.txt`, substitui a extensão por `.bak` e renomeia todos de uma vez, usando `sed` e `xargs`.
- Excluir arquivos antigos automaticamente:
find /pasta -type f -mtime +30 | xargs rm
- Encontra e remove arquivos que têm mais de 30 dias de idade.
- Buscar informações no sistema e salvar no clipboard:
df -h | grep '/dev/sda1' | xclip -selection clipboard
- Mostra o uso de disco da partição `/dev/sda1` e copia o resultado diretamente para a área de transferência.
- Verificar se um serviço está rodando e enviar email de alerta se não estiver:
systemctl is-active apache2 || echo "O Apache caiu!" | mail -s "Alerta de Apache" admin@empresa.com
- Verifica se o serviço `apache2` está ativo; caso contrário, envia um alerta por email.
- Listar processos de forma hierárquica (em árvore):
ps -ef --forest
- Exibe a árvore de processos atuais com a relação entre pai e filho.
- Buscar uma string em arquivos e copiar os resultados para outro diretório:
grep -rl "termo_busca" /origem | xargs -I{} cp {} /destino- Encontra arquivos que contêm uma string específica e copia-os para outro diretório.
- Monitorar logs em tempo real e filtrar por erros:
tail -f /var/log/syslog | grep "error"
- Monitora o arquivo de log do sistema em tempo real e exibe apenas as linhas que contêm “error”.
- Buscar um processo pelo nome e exibir o uso de memória:
ps aux | grep nome_processo | awk '{print $4, $11}'- Filtra processos pelo nome e exibe a porcentagem de memória usada e o comando executado.
- Criar backup de banco de dados MySQL e compactar:
mysqldump -u usuario -p banco_dados | gzip > backup.sql.gz
- Faz um backup do banco de dados MySQL e comprime o arquivo de saída com `gzip`.
- Verificar portas abertas e mostrar o nome do serviço:
netstat -tuln | grep LISTEN | awk '{print $4}' | xargs -I{} lsof -i :{}- Lista as portas abertas e mostra qual serviço está usando cada porta.
- Medir o tempo de execução de um comando e enviar resultado por email:
time ls /pasta | mail -s "Resultado do comando" admin@empresa.com
- Executa o comando `ls` e envia o tempo gasto por email.
- Compactar e mover arquivos com um único comando:
tar -czvf backup.tar.gz /caminho/origem && mv backup.tar.gz /caminho/destino
- Cria um arquivo compactado e move-o para outro diretório em uma única linha.
- Redirecionar saídas padrão e de erro para arquivos diferentes:
comando > saida.log 2> erro.log
- Redireciona a saída padrão para `saida.log` e os erros para `erro.log`.
- Contar o número de arquivos e subdiretórios em um diretório:
find /caminho/diretorio -type f | wc -l
- Conta o número total de arquivos dentro de um diretório.
- Mostrar a utilização da CPU por cada core separadamente:
mpstat -P ALL 1
- Exibe a utilização da CPU para cada core, atualizando a cada 1 segundo.
- Baixar e extrair um arquivo diretamente da web:
curl -O https://exemplo.com/arquivo.tar.gz && tar -xzvf arquivo.tar.gz
- Faz o download de um arquivo com `curl` e o extrai automaticamente.
- Buscar por um processo em execução e matar todos de uma vez:
ps aux | grep processo_nome | awk '{print $2}' | xargs kill -9- Encontra processos pelo nome e mata todos os processos relacionados.
- Verificar uso de disco e listar os 10 maiores arquivos:
du -ah /pasta | sort -rh | head -n 10
- Exibe os 10 maiores arquivos e diretórios no caminho especificado.
- Exibir estatísticas da rede e atualizá-las continuamente:
netstat -i | watch -n 5
- Exibe estatísticas da interface de rede e as atualiza a cada 5 segundos.
- Compactar e excluir arquivos antigos de log:
find /var/log -type f -mtime +30 -name "*.log" -exec gzip {} \; -exec rm {} \;- Compacta e remove logs com mais de 30 dias.
- Criar múltiplos diretórios e subdiretórios com um único comando:
mkdir -p /caminho/{dir1,dir2/{subdir1,subdir2}}- Cria múltiplos diretórios e subdiretórios em uma única linha.
- Sincronizar diretórios e deletar arquivos que não existem na origem:
rsync -av --delete /origem/ /destino/
- Sincroniza diretórios e remove arquivos no destino que foram deletados da origem.
- Monitorar uso de espaço de um diretório e alertar se estiver cheio:
df -h /diretorio | awk '$5 > 90 {print "Atenção: Uso de disco superior a 90%!"}'- Monitora o uso de disco e alerta quando ultrapassa 90%.
- Limpar a cache de disco (útil para liberar memória em servidores):
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
- Limpa a cache de arquivos em memória (não afeta dados no disco).
- Atualizar pacotes do sistema e remover os pacotes obsoletos:
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
- Atualiza pacotes, instala as novas versões e remove pacotes antigos não utilizados.
- Criar um servidor HTTP simples com Python:
python3 -m http.server 8080
- Inicia um servidor HTTP na porta 8080 para servir arquivos do diretório atual.
- Buscar todos os arquivos modificados nos últimos 24 horas:
find /caminho -type f -mtime -1
- Lista todos os arquivos que foram modificados nas últimas 24 horas.
- Copiar somente novos ou modificados arquivos entre dois diretórios:
rsync -av --ignore-existing /origem/ /destino/
- Copia apenas os arquivos novos ou modificados da origem para o destino, sem sobrescrever os existentes.
- Monitorar múltiplos logs ao mesmo tempo:
tail -f /var/log/syslog /var/log/auth.log
- Monitora múltiplos arquivos de log em tempo real.
- Criar uma lista de arquivos e salvar com timestamps no nome:
ls -l > "lista_arquivos_$(date +%Y%m%d_%H%M%S).txt"
- Cria uma lista de arquivos e salva o arquivo de saída com o timestamp no nome.
- Desligar o sistema em 10 minutos:
sudo shutdown -h +10 "O sistema será desligado em 10 minutos"
- Agende o desligamento do sistema em 10 minutos, com uma mensagem para os usuários conectados.
- Renomear uma série de arquivos trocando parte do nome:
for f in *.jpg; do mv -- "$f" "${f%.jpg}.png"; done- Troca a extensão de todos os arquivos `.jpg` para `.png`.
- Verificar a latência de conexão com um servidor específico:
ping -c 5 exemplo.com | grep 'time='
- Executa 5 testes de ping e exibe somente as linhas com o tempo de resposta.
- Baixar todos os arquivos de um site com `wget`:
wget -r -np -k http://exemplo.com
- Faz o download de todos os arquivos de um site, mantendo a estrutura de links.
- Filtrar registros por data em um arquivo de log:
grep "2024-10-12" /var/log/syslog
- Exibe todas as linhas de um log que contenham a data “2024-10-12”.
