Você pode alterar a citação de um bit para não permitir que os backticks sejam avaliados até quando o alias for usado.
alias ncstop 'nc stop 'nc list | awk '\''/Running/{print $1}'\''''
Isso funciona porque quando o caractere '
é usado para aspas, para que os caracteres especiais, como |
, $
e backtick
, não sejam interpretados pelo shell. Isso permite que esses caracteres especiais entrem na definição de alias. Mas no processo de definir o alias, o shell remove essa camada externa de '
. O que realmente acaba na definição de alias deve ser:
nc stop 'nc list | awk '/Running/{print $1}''
A construção '\''
geralmente pode usar um pouco de explicação. Mas resumidamente, são três apóstrofos. O primeiro termina a string citada anterior, a próxima (que é escapada para não ser interpretada pela shell) passa e a terceira inicia outra string entre aspas. Portanto, a construção '\''
permite que um apóstrofo (ou seja, '
ou single quote
) apareça dentro de uma única sequência entre aspas.
Obter todas as aspas e fugas diretamente em uma string que precisa atravessar várias camadas de interpretação fica confuso e complicado muito rapidamente. Houve um comentário sobre a questão que recomendou (por bash
) investigar a implementação de aliases como funções. Tenho certeza de que o mesmo poderia ser recomendado para tcsh
.