我正在尝试在我的 .bashrc 配置文件中使用以下别名:
alias ip2asn="IP=$(dig $1 a +short);whois -h v4.whois.cymru.com " -v $IP""
命令本身没有问题,但是当我在 .bashrc 中创建别名并尝试获取 ~./bashrc 时,我得到以下输出:
$ source .bashrc
bash: alias: -v: not found
bash: alias: k.root-servers.net.: not found
bash: alias: d.root-servers.net.: not found
bash: alias: c.root-servers.net.: not found
bash: alias: e.root-servers.net.: not found
bash: alias: f.root-servers.net.: not found
bash: alias: m.root-servers.net.: not found
bash: alias: g.root-servers.net.: not found
bash: alias: b.root-servers.net.: not found
bash: alias: j.root-servers.net.: not found
bash: alias: i.root-servers.net.: not found
bash: alias: h.root-servers.net.: not found
bash: alias: a.root-servers.net.: not found
bash: alias: l.root-servers.net.: not found
我注意到 bash shell 似乎在执行别名后仍保留 $IP 变量。我不确定如何回应这个问题。
有什么建议吗? 谢谢, --技术萨满
最佳答案
您的声明中存在一些问题。首先是您需要转义内部双引号 "
,否则您将关闭并重新打开它们。第二个问题是您的 $IP
正在扩展别名声明,而不是在您使用它时。
关于 $IP
在执行别名时幸存下来:别名只不过是为您键入的命令。您根本不应该使用变量或创建子 shell - 用 ()
包含所有内容。
alias ip2asn='(IP=$(dig $1 a +short);whois -h v4.whois.cymru.com -v "$IP")'
无论如何我认为这不会像您预期的那样工作,别名不会接收那样的参数,这个 $1
不会工作。听起来你需要一个功能:
ip2asn() {
whois -h v4.whois.cymru.com -v "$(dig "$1" a +short)"
}
关于linux - ASN 查找别名不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35649119/