No se puede usar awk en la cadena de comando de alias

No se puede usar awk en la cadena de comando de alias

Me gustaría agregar esta cadena de comandos a alias para tener una abreviatura:

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

Sin embargo, como alias no funciona como debería:

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

Intenté usar comillas simples en lugar de comillas dobles o usar un carácter de escape \antes de las comillas de awk, pero ninguna funcionó. Así que agradezco tu ayuda.

Respuesta1

De acuerdo a lo pedido:

Ésta es una de las razones por las que las funciones son mejores que los alias: puedes evitar las citas infernales.

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

o, más legible

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

u otro estilo de varias líneas:

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

información relacionada