obtém o valor de um alias no bash

3

Eu recentemente mudei de tcsh para bash, e estou acostumado a fazer coisas como sudo 'alias netstat' , mas como aliasname=value no bash, não posso mais fazer isso. Existe um equivalente no bash, então eu não tenho que fazer sudo 'alias netstat | sed -r "s/.*='(.*)'//"' ?

    
por Jayen 01.01.2012 / 10:03

2 respostas

2

Você está tentando fazer com que bash expanda aliases após sudo . Você não precisa fazer exatamente da mesma maneira; na verdade, há uma maneira muito mais conveniente no bash - adicione um alias para sudo que termine com um espaço ...

alias sudo="sudo "

... e sudo netstat serão expandidos automaticamente.

    
por 01.01.2012 / 14:24
4

O Bash armazena sua lista de aliases no array associativo BASH_ALIASES . O equivalente a sudo 'alias netstat' é então sudo ${BASH_ALIASES[netstat]} . No entanto, eu sugeriria o seguinte, que funciona com os comandos incorporados do shell e lida corretamente com as citações:

sudo bash -c "${BASH_ALIASES[netstat]}"

Ainda há muito que não funciona com isso, como, por exemplo, aliases aninhados.

    
por 01.01.2012 / 14:00