O alias não funciona?

1

Eu criei um alias em ~ / .cshrc assim

alias bw  "bjobs -w | awk '{print $7}'"

mas não funciona por $ 7. Como faço para corrigir isso ?

    
por Trong Nhan Nguyen 14.06.2018 / 06:48

2 respostas

0

Tente ver o que csh definiu seu alias, digitando isso no prompt de comando:

% alias bw

bjobs -w | awk '{print }'

O que aconteceu? o shell expandiu uma variável do shell chamada $ 7, que por acaso não é nada, e recheou esse valor nulo na definição do alias.

Portanto, isso sugere uma solução em si, precisamos citar o dólar em US $ 7, longe dos olhares indiscretos da concha, para que ela seja inserida literalmente na definição do alias:

% alias bw "bjobs -w | awk" {print "\ $" 7} '"

Agora, quando testamos o que é o alias:

% alias bw

bjobs -w | awk '{print $7}'

e isso é exatamente o que você digitaria na linha de comando!

Para realizar a redação da definição de alias, realizamos isso em três etapas:

 - The quoting is done by closing the double quotes just before the $ to
            come out of the alias' quoting.
 - Now the $ needs to be escaped via a backslash to stop it from being 
            expanded before the alias takes effect.
 - Start the double quotes to re-enter the alias' quoting.

** Eu gostaria de poder desenhar isso pictoricamente, o que torna muito trivial entender.

    
por 14.06.2018 / 09:29
0

Tente:

alias bw 'bjobs -w | awk '\''{print $7}'\'''

csh de cotação é doloroso.

    
por 14.06.2018 / 06:59

Tags