如何在 bash 中模拟来自 zsh 的全局别名?

How to emulate global aliases from zsh in bash?

zsh中,您可以定义全局别名。例如,

alias -g G='| grep'
alias -g W='| wc -l'

然后像这样使用它们:

some_command G some_text W

可以在 bash 中以某种方式模拟全局别名吗?

假设您永远不想将大写字母 G 用于任何其他目的,您可以将此添加到您的 .bashrc 文件中:

bind '"G": "| grep"'

这会在您输入 G 后立即将其展开为 | grep。也就是说,Shift+g不再产生大写的G,而是字符串| grep。您会想要选择一个更长的序列,您永远不会期望以其他方式键入它,无论是单独键入还是作为另一个单词的一部分。

您可以将其保存到变量中

g='| grep'

那么,你的命令可以是

eval some_command $G some_text

some_command $G some_text Ctrl+Alt+E(在其他系统上,它 seems to be ?ctrl+x+* 并且是可配置的)

将命令扩展为所需的 some_command | grep some_text,因此您可以按 Enter 键。不应扩展的变量必须用单引号引起来。

虽然没有 zsh。