Ao usar este comando como um alias, $0
não é mais protegido pelas aspas simples, portanto, é convertido em seu nome de shell. Estes comandos demonstram isso:
$ alias F="echo '$0'"
$ F
bash
O nome do shell (presumivelmente bash
) é um nome de variável unset awk
Uma maneira de proteger $0
da expansão do shell seria usar algo como:
alias F="find -type f -size +1k -exec ls -gGsSh1 {} + | awk 'NR<=10 {print \find -type f -size +10M -exec ls -gGsSh1 {} + | awk 'NR<=10 {print}'
}'"
No entanto, como esse $0
é inútil, basta removê-lo da instrução awk
.
find -type f -size +10M -exec ls -gGsSh1 {} + | awk 'NR<=10'
Você pode ir mais longe e remover todo o bloco, pois a impressão da linha selecionada é awk
, de qualquer maneira:
find -type f -size +10M -exec ls -gGsSh1 {} + 2>&1 | head
Como alternativa, você pode continuar usando head
e descartar a mensagem de erro:
$ alias F="echo '$0'"
$ F
bash