3

Я недавно переключился с tcsh на bash, и я привык делать такие вещи, как sudo `alias netstat` но так как alias дает name=value в bash, я больше не могу этого делать. Есть ли эквивалент в bash, поэтому мне не нужно делать sudo `alias netstat | sed -r "s/.*='(.*)'/\1/"`?

2 ответа2

4

Bash хранит свой список псевдонимов в ассоциативном массиве BASH_ALIASES . Эквивалентом sudo `alias netstat` будет тогда sudo ${BASH_ALIASES[netstat]} . Однако вместо этого я бы предложил следующее, которое работает со встроенными командами оболочки и правильно работает с цитированием:

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

Еще много чего не будет с этим работать, например, вложенные псевдонимы.

2

Вы пытаетесь заставить bash расширять псевдонимы после sudo . Вам не нужно делать это точно так же; на самом деле, в bash есть гораздо более удобный способ - добавить псевдоним для sudo , заканчивающийся пробелом ...

alias sudo="sudo "

... и sudo netstat будет расширен автоматически.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .