如何在不执行包含在其中的美元符号的情况下定义别名?

Chi*_*Abs 6 bash alias

我有别名:alias gwanip=echo "$(dig +short myip.opendns.com @resolver1.opendns.com)。这工作正常,但我刚刚意识到它在每次获取 bashrc 时都会执行命令 dig。我如何保持它的功能(即回显我的 ip 调用 gwanip)但每次 bashrc 都没有运行它?

Kus*_*nda 7

转义美元符号,或删除无用的,echo $( ... )然后拥有

alias gwanip="dig +short myip.opendns.com @resolver1.opendns.com"
Run Code Online (Sandbox Code Playgroud)

或者改用 shell 函数:

function gwanip {
  dig +short myip.opendns.com @resolver1.opendns.com
}
Run Code Online (Sandbox Code Playgroud)

使用 shell 函数,您甚至可以创建一个更通用的 shortdig函数并调用它。

function shortdig {
  dig +short "$1" "$2"
}

function gwanip {
  shortdig "myip.opendns.com" "@resolver1.opendns.com"
}
Run Code Online (Sandbox Code Playgroud)

bash手册包含的声明

对于几乎所有目的,别名都被 shell 函数取代。


Chi*_*Abs 5

转义美元符号就行了。