您如何管理 bash/zsh 别名?

您如何管理 bash/zsh 别名?

您如何管理 bash/zsh 别名?

有没有一种工具可以更轻松地完成此操作,减少“考虑别名 -> 打开 .zshrc-sourced-file -> 编辑 -> 关闭,重新加载 .zshrc -> 使用别名”?

答案1

我很少再添加或编辑我的别名,但我仍然有并且偶尔使用:

alias savealiases='alias > ~/.bash-aliases'

我也有loadaliases,因此我可以在一个 shell(终端窗口或选项卡、tmux 窗口、ssh 会话等)中创建或更改别名,并轻松将其加载到其他正在运行的 shell 中。

alias loadaliases='source ~/.bash-aliases'

为了确保在登录或启动新 shell 时加载我的别名,我的 中包含以下内容~/.bashrc

[ -e ~/.bash-aliases ] && . ~/.bash-aliases

非常原始,但它对我来说已经足够好了 20 多年了。如果我需要对我的别名进行任何花哨的编辑,我可以使用 vi。

答案2

如果您不仅对 bash 和 zsh 感兴趣,您可能对 UNOS 命令解释器于 1980 年引入的完全不同的方法感兴趣。该命令解释器实现了存储在文件中的持久别名$HOME/.globals

此方法现在可在 bsh 中使用,在最新的 Bourne Shell 版本中,您可以从 Schily-Tools 获得。

请查看最近的 Bourne Shell 手册页:

http://schillix.sourceforge.net/man/man1/bosh.1.html

我之所以提到这种方法,是因为 Korn Shell 语法中的复杂别名很难用正确的引用来键入,而 Bourne Shell 实现了(作为除 之外的附加方法alias)所谓的哈希命令,允许在原始模式下输入别名。

顺便说一句:为不支持持久别名的其他 shell 保存别名的正确方法是:

alias -p > file

如果您只是alias使用 ksh93 调用,您会得到如下输出:

autoload='typeset -fu' command='command ' compound='typeset -C'

但是当你打电话时alias -p,你会得到:

alias autoload='typeset -fu' alias command='command ' alias compound='typeset -C'

正如您所看到的,您需要,alias -p因为它返回的内容稍后可以通过调用再次用作 shell 输入:

. file

编辑:alias -p不是 POSIX,但除了 bash 之外没有 shell 似乎默认会生成可解析的输出。有些 shell 永远不会产生可解析的输出!

-p需要输出的 shellparsable有:

  • 伯恩壳牌
  • ksh93(ksh88 既不支持可解析输出也不支持 -p)

bash 允许 -p...

顺便提一句:短跑根本不支持可解析输出,也不支持-p。 桀骜alias -p实现via的等效项alias -L

相关内容