您如何管理 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
。