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