Linux — comandos bem úteis
sed — tr — grep — cut — uniq, uma pincelada:
O linux trata a entrada e saída de programas como sequência de caracteres ou streams.
Streams e redirecionamentos, um resumo
O caractere > é utilizado para redirecionar a saída de um comando para um arquivo, por exemplo:
netstat -nptl > portas_tcp_abertas.txt
Já o caractere | é utilizado para redirecionar a saída de um comando para a entrada de outro comando:
ps -ef | egrep -i "(apache|httpd)"
O comando acima lista todos os processos com o trecho "ps -ef", a saída deste primeiro comando é redirecionada para o filtro "egrep", que filtra pelas linhas que contenha a palavra "apache" ou "httpd".
sed
O nome é uma abreviação para Stream Editor. Seu uso mais comum é para a substituição de caracteres:
# substitui todas as ocorrencias de y por Y
# a flag g faz com que todas as ocorrências de y na mesma linha
# sejam substituídas e não só a primeira ocorrência de cada linhased 's/y/Y/g' /etc/services > /tmp/services
Mais de uma substituição no mesmo comando:
# substitui windows por linux e ios por android
sed 's/windows/linux/g;s/ios/android/g'# substitui and por &, repare o uso de \ como escape
# no mesmo comando também substitui I no início da linha por You
sed 's/and/\&/g;s/^I/You/'
Exibindo arquivos de configuração sem os comentários e linhas em branco:
sed '/^#\|^$/d' /etc/services
grep
Procura por um padrão ou uma expressão regular em um texto de entrada ou um arquivo:
# procura pela palavra samba no arquivo /etc/services,
# ignorando maiúsculas/minúsculasgrep -i samba /etc/services# procura por arquivos ou diretórios com cron no nome,
# dentro do diretório /etc/ls /etc |grep cron
tr
Traduz ou apaga caracteres da entrada e exibe na saída:
# Exibe o conteúdo do arquivo /etc/passwd
# trocando minúsculas por maiúsculascat /etc/passwd | tr [:lower:] [:upper:]
# remove espaços em branco repetidos # squeeze repeats
# bom para usar em conjunto com o cutls -l |tr -s ' '
cut
Extrai porções de acordo com a quantidade de bytes -b, caracteres -c, ou campos -f. Este último é o mais utilizado:
# usar o caractere : como delimitador e
# extrai os campos 1 e 7
# para extrair um intevalo, ex, de 1 a 3, use -f1-3cat /etc/passwd |cut -d: -f1,7
uniq
Conta e/ou remove linhas duplicadas adjacentes. Por este motivo o comando uniq geralmente é utilizado com o comando sort.
# ordena as linhas de log do arquivo maillog e
# conta as linhas repetidas, exibindo no terminalcat /var/log/maillog |sort |uniq -c# Ou um exemplo mais útil, conta as tentativas falhas de login SSH
# ordenando pelo IP que mais falhou.cat /var/log/secure |grep 'Invalid user'|cut -d' ' -f10 |sort -n |uniq -c |sort -nr
Curtiu? Então recomende.
Obrigado!