Como definir um alias sem executar sinais de dólar contidos dentro?

2

Eu tenho o alias: alias gwanip=echo "$(dig +short myip.opendns.com @resolver1.opendns.com) . Isso funciona bem, exceto que acabei de perceber que ele executa o comando dig everytime bashrc é originado. Como eu mantenho a funcionalidade dele (ou seja, echo meu ip up chamando gwanip) mas sem que ele seja executado toda vez que o bashrc é originado?

    
por ChiseledAbs 27.07.2016 / 08:59

2 respostas

4

Escape do cifrão ou remova o echo $( ... ) inútil e apenas tenha

alias gwanip="dig +short myip.opendns.com @resolver1.opendns.com"

ou use uma função de shell:

function gwanip {
  dig +short myip.opendns.com @resolver1.opendns.com
}

Com as funções do shell, você pode até criar uma função shortdig mais genérica e chamar isso.

function shortdig {
  dig +short "$1" "$2"
}

function gwanip {
  shortdig "myip.opendns.com" "@resolver1.opendns.com"
}

O manual bash contém a declaração

For almost every purpose, aliases are superseded by shell functions.

    
por 27.07.2016 / 09:30
2

Escapar dos cifrões é o truque.

    
por 27.07.2016 / 09:23

Tags