O padrão grep
parece errado. A regra geral da linha de comando é que tudo dentro de aspas simples é tomado literalmente, enquanto que quando não citadas ou dentro de aspas duplas, o shell expande essa string de acordo com suas regras (globing, splitting, expansão de parâmetro etc.). No seu caso, o comando
grep -E '*"$*"*' ~/.dotfiles/zsh/aliases.zsh
significa passar para grep
string *"$*"*
literalmente, para que grep interprete este padrão como estrela, seguido por aspas duplas, seguido por sinal dolar repetido zero ou mais vezes ( *
), seguido por aspas duplas repetido zero ou mais vezes ( *
). Não é isso que você espera.
Você deseja tratar $*
como uma variável (nesse caso, com aspas duplas), então feche a string com aspas simples na frente e abra depois:
grep -E '*'"$*"'*' ~/.dotfiles/zsh/aliases.zsh
Mas eu não vejo a razão para essas estrelas (você não quer grep para as estrelas, não é?), para mim parece que você pode simplesmente simplificar isso para
grep -E "$*" ~/.dotfiles/zsh/aliases.zsh