在 bash 中获取别名的值

在 bash 中获取别名的值

我最近从 tcsh 切换到了 bash,我习惯于执行类似这样的操作sudo `alias netstat`,但是由于bash 中alias存在问题name=value,所以我不能再这样做了。bash 中是否有等效项,这样我就不必执行了sudo `alias netstat | sed -r "s/.*='(.*)'/\1/"`

答案1

你想狂欢扩展 后的别名sudo。您不需要以完全相同的方式执行此操作;事实上,bash 中有一种更方便的方法 - 添加以sudo空格结尾的别名...

alias sudo="sudo "

...并将sudo netstat自动扩展。

答案2

Bash 将其别名列表存储在关联数组中BASH_ALIASES。 相当于。sudo `alias netstat`但是sudo ${BASH_ALIASES[netstat]},我建议改用以下内容,它适用于内置 shell 命令并正确处理引用:

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

仍有很多功能无法使用,例如嵌套别名。

相关内容