在bash中获取别名的值

Jay*_*yen 4 linux bash alias tcsh

我最近从tcsh中切换到bash的,我已经习惯了能够做这样的事情sudo `alias netstat`,但由于alias给了name=value在bash,我不能再这样下去了。bash 中是否有等价物,所以我不必这样做sudo `alias netstat | sed -r "s/.*='(.*)'/\1/"`

小智 9

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

sudo bash -c "${BASH_ALIASES[netstat]}"
Run Code Online (Sandbox Code Playgroud)

还有很多不能用这个,比如嵌套别名。


use*_*686 2

您试图让bash在 后扩展别名sudo。您不需要以完全相同的方式进行操作;事实上,在 bash 中有一种更方便的方法——添加一个以sudo空格结尾的别名......

alias sudo="sudo "
Run Code Online (Sandbox Code Playgroud)

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