我最近从 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]}"
仍有很多功能无法使用,例如嵌套别名。