Substituição de comando no alias resolvido no perfil bash? [duplicado]

4

Eu quero fazer um alias para alterar aleatoriamente meu endereço mac

alias chrandmac="sudo ifconfig en0 ether $(openssl rand -hex 6 | sed 's/\(..\)/:/g; s/.$//')"

mas a parte de substituição de comandos já foi resolvida ao executar o perfil.

alias chrandmac='sudo ifconfig en0 ether 83:3a:bf:fc:4e:29'

Alguma idéia de por que isso ocorre?

    
por 1.61803 30.03.2013 / 21:24

1 resposta

8

Você deseja usar uma função em vez de um alias. Pode ser colocado no seu arquivo de inicialização como um alias:

chrandmac() {
    sudo ifconfig en0 ether $(openssl rand -hex 6 | sed 's/\(..\)/:/g; s/.$//')
}

Para que funcione com um alias, você precisa usar aspas simples para impedir a expansão da substituição de comandos.

alias chrandmac='sudo ifconfig en0 ether $(openssl rand -hex 6 | sed '\''s/\(..\)/:/g; s/.$//'\'')'
    
por 30.03.2013 / 21:31