[英]How to get recursive aliases in bash?
由于处理一些拼写错误,我有多个aliases
被别名为一个公共别名。 请注意,我在zsh
shell 中使用which
并type
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.