Francamente, no momento em que um comando fica tão grande, eu o transformaria em um script e não em um alias. Uma vantagem de um script é que você faz com que ele funcione com mais arquivos do que apenas 'access.logs'.
Essa sequência de comandos envolve tanto aspas simples quanto as aspas - isso sempre aumenta a diversão. Geralmente, é melhor usar $(command args)
no lugar de citações anteriores.
Quando você usa as aspas duplas em torno do alias, os comandos citados por trás são executados quando o alias é criado - a menos que o shell tenha uma maneira diferente de interpretar as coisas ao definir o alias. Além disso, as expressões $var
são avaliadas entre aspas duplas, portanto, os erros awk
mostram que você não possui argumentos no shell atual.
Portanto, se você precisar usar um alias, provavelmente precisará usar aspas simples em torno da expressão inteira, além de cada uma das aspas simples que aparecem na expressão, substitua-as pela sequência quote-backslash-quote-quote:% código%. A primeira cotação finaliza a string citada atual; a citação da barra invertida representa uma citação literal; a cotação final reinicia a string citada.
Isso leva a:
alias downloads='grep 'date '\''+%d/%b/%Y'\''' access.logs |
egrep 2765330645ae47d292c9ceac725d744e.py |
awk '\''{print $1, $4, $5, $7, $8, $9, $10}'\'' |
sort | uniq -c -w15 | sort -n'