O alias em .bash_aliases é executado incorretamente

0

Eu tenho um alias em .bash_aliases e isso me dá uma saída incorreta quando eu o aciono.

alias print="echo a b | awk '{print $2}'"

saída incorreta:

slazer@ubuntu:~/Desktop/xpalenik_pb161/hw03/examples/extra$ print
a b

resultado esperado:

slazer@ubuntu:~/Desktop/xpalenik_pb161/hw03/examples/extra$ echo a b | awk '{print $2}'
b

outras informações:

slazer@ubuntu:~/Desktop/xpalenik_pb161/hw03/examples/extra$ cat ~/.bashrc | grep 'alias print'
slazer@ubuntu:~/Desktop/xpalenik_pb161/hw03/examples/extra$ cat ~/.bash_aliases | grep 'alias print'
alias print="echo a b | awk '{print $2}'"
slazer@ubuntu:~/Desktop/xpalenik_pb161/hw03/examples/extra$ alias | grep 'alias print'
alias print='echo a b | awk '\''{print }'\'''
slazer@ubuntu:~/Desktop/xpalenik_pb161/hw03/examples/extra$ print
a b
slazer@ubuntu:~/Desktop/xpalenik_pb161/hw03/examples/extra$ echo a b | awk '{print $2}'
b
slazer@ubuntu:~/Desktop/xpalenik_pb161/hw03/examples/extra$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty

Eu não instalei todas as atualizações. Isso poderia ser um problema?

    
por Slazer 15.11.2015 / 17:39

1 resposta

4

Você precisa escapar do $ para evitar que ele seja expandido pelo shell; como se expande para nada, seu alias se torna equivalente a

alias print="echo a b | awk '{print }'"

Tente

alias print="echo a b | awk '{print \}'"
    
por steeldriver 15.11.2015 / 17:46