如何解决如何在bash中获取递归别名?
我有多个aliases
,由于处理一些拼写错误而被别名为一个通用别名。请注意,我在which
外壳中使用zsh
,在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
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
现在使用任何新的“别名”将调用原始脚本。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。