繁体   English   中英

如何在bash中获得递归别名?

[英]How to get recursive aliases in bash?

由于处理一些拼写错误,我有多个aliases被别名为一个公共别名。 请注意,我在zsh shell 中使用whichtype bash

例如:

alias netlab="ssh user@IP_ADDRESS"
alias n=netlab
alias ne=netlab
alias net=netlab
alias nn=netlab

当我尝试获取别名的类型时,我得到以下信息:

$ which -sa n  # in ZSH-shell
n: aliased to netlab

$ type n  # in BASH-shell
n is an alias for netlab

由于netlab也有别名,我也可以得到它吗? 所以基本上,我想递归地应用which program

我想要的示例输出:

$ type n  # in BASH-shell 
n: aliased to netlab
netlab: aliased to ssh user@IP_ADDRESS

或者只是返回其最新的别名:

$ type n
n: aliased to ssh user@IP_ADDRESS

您可以使用大括号扩展将多个名称别名为同一个字符串:

alias {netlab,n,ne,net,nn}="ssh user@IP_ADDRESS"

别名集不会传递到 bash 脚本中。 您可以使用source访问别名,然后使用type循环直到找到真正的命令。 我无法想象使用source运行脚本会很方便。

但是,您可以使用 bash 脚本和符号链接来实现与别名相同的结果。

以下假设 $HOME/bin 在您的 PATH 上。

cat < $HOME/bin/netlab ssh user@IP_ADDRESS EOF

ln -s $HOME/bin/netlab $HOME/bin/n ln -s $HOME/bin/netlab $HOME/bin/ne ln -s $HOME/bin/netlab $HOME/bin/net ln -s $HOME /bin/netlab $HOME/bin/nn

现在使用任何新的“别名”都会调用原始脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM