Comando agindo diferente no terminal bash_profile vs

2

git branch -r | awk '{print $1}' digitado nos rendimentos do terminal:

origin/HEAD
origin/master

enquanto alias test1="git branch -r | awk '{print $1}'" em .bash_profile produz:

  origin/HEAD -> origin/master
  origin/master

Por que awk '{print $1}' é ignorado no .bash_profile ?

    
por JRLambert 12.10.2017 / 23:33

1 resposta

5

Defina o alias:

$ alias test1="git branch -r | awk '{print $1}'"

Veja então a sua definição:

$ alias test1
alias test1='git branch -r | awk '\''{print }'\'''

Veja como o $1 desapareceu? Isso porque sua definição de alias estava entre aspas duplas. Isso significa que o shell expandiu a variável $1 na string que definiu o alias. Seu valor estava vazio.

Use aspas simples em torno de sua definição de alias, escape do $ ou escreva uma função apropriada:

test1 () {
    git branch -r | awk '{ print $1 }'
}

Uma boa regra geral pode ser esta: Se o seu alias é mais complexo que um único comando (e requer uma cotação especial, etc.), então escreva-o como uma função de shell.

    
por 13.10.2017 / 00:16