使命令行别名显示真实命令 (Mac)

Rya*_*yan 3 macos bash alias zsh oh-my-zsh

我已经在导入的文件中创建了一堆别名~/.zshrc,例如:

alias sl='git status -uall'
Run Code Online (Sandbox Code Playgroud)

当我在终端中运行别名(例如sl)时,它们按预期工作。

但是,我希望运行命令之前他们能够打印他们将要运行的命令本身。

例如,当我输入并按回车键时,如果我随后在终端中看到该命令的输出,sl那就太好了。git status -uall

这样,我就会不断提醒自己我的别名代表什么。

我怎么能这样做呢?

che*_*ner 5

alias一个想法是在定义的开头添加一个调用:

$ alias foo='alias foo; echo bar'
$ foo
alias foo='alias foo; echo bar'
bar
Run Code Online (Sandbox Code Playgroud)

最接近bash自动打印别名值的是使用该xtrace选项(尽管它在执行时将每个命令输出到标准错误)。

您还可以将 Readline 命令绑定alias-expand-line到某个键。

bind '"\C-x\C-a": alias-expand-line'
Run Code Online (Sandbox Code Playgroud)

现在,在输入 Enter 之前输入 Control-x、Control-a 将导致bash在当前命令行上就地执行别名扩展,让您在执行结果命令之前查看、编辑和/或中止结果命令。