Não é possível usar o awk na cadeia de comando do alias

Não é possível usar o awk na cadeia de comando do alias

Gostaria de adicionar esta cadeia de comando ao alias para ter uma abreviação:

tail -10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10

No entanto, como alias, não funciona como deveria:

alias ttn="tail -10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10"

Tentei usar aspas simples em vez de aspas duplas ou usar um caractere de escape \antes das aspas do awk, mas nada funcionou. Então agradeço sua ajuda.

Responder1

Como pedido:

Esta é uma das razões pelas quais as funções são melhores que os aliases: você pode evitar citar o inferno.

ttn() { tail -10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10; } 

ou, mais legivelmente

ttn() { 
    tail -10000 /var/log/nginx/access.log | 
      awk '{print $1}' | 
      sort | 
      uniq -c | 
      sort -nr | 
      head -10
} 

ou outro estilo multilinha:

ttn() { 
    tail -10000 /var/log/nginx/access.log \
    | awk '{print $1}' \
    | sort \
    | uniq -c \
    | sort -nr \
    | head -10
} 

informação relacionada