===== 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".