![如何定义别名而不执行其中包含的美元符号?](https://linux22.com/image/91279/%E5%A6%82%E4%BD%95%E5%AE%9A%E4%B9%89%E5%88%AB%E5%90%8D%E8%80%8C%E4%B8%8D%E6%89%A7%E8%A1%8C%E5%85%B6%E4%B8%AD%E5%8C%85%E5%90%AB%E7%9A%84%E7%BE%8E%E5%85%83%E7%AC%A6%E5%8F%B7%EF%BC%9F.png)
我有别名:alias gwanip=echo "$(dig +short myip.opendns.com @resolver1.opendns.com)
。这工作得很好,除了我刚刚意识到它每次获取 bashrc 时都会执行命令 dig 。如何保持它的功能(即回显我的 ip 调用 gwanip),但每次 bashrc 来源时都不运行它?
答案1
逃避美元符号,或者删除无用的部分echo $( ... )
,然后就可以了
alias gwanip="dig +short myip.opendns.com @resolver1.opendns.com"
或者使用 shell 函数代替:
function gwanip {
dig +short myip.opendns.com @resolver1.opendns.com
}
使用 shell 函数,您甚至可以创建一个更通用的shortdig
函数并调用它。
function shortdig {
dig +short "$1" "$2"
}
function gwanip {
shortdig "myip.opendns.com" "@resolver1.opendns.com"
}
手册bash
包含以下声明
对于几乎所有用途,别名都被 shell 函数取代。
答案2
摆脱美元符号就可以了。