带管道的 Bash 别名

带管道的 Bash 别名

我不太清楚我做错了什么。我尝试运行命令

alias localip='ip -4 -o addr show eth0 | egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | head -n 1'

如果我运行命令

ip -4 -o addr show eth0 | egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | head -n 1

我得到了我期望的结果,但是,当尝试使用该命令创建别名时,我得到了

-bash:意外标记‘(’附近有语法错误

任何帮助都将不胜感激。TIA。

答案1

您将单引号嵌套在单引号中。这样不行。

尝试在内部表达式中使用"双引号。"

答案2

我发现一个更简洁的解决方案,只需创建一个函数并在该函数之后命名别名,如下所示:

alias localip=GetLocalIP

function GetLocalIP()
{
   ip -4 -o addr show eth0 | egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | head -n 1
}

相关内容