Bash alias with piping
I'm not exactly sure what I'm doing wrong with this one. I'm trying to run the command
alias localip='ip -4 -o addr show eth0 | egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | head -n 1'
If I run the command
ip -4 -o addr show eth0 | egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | head -n 1
I get the result I expect, however, when trying to create an alias with the command, I get
-bash: syntax error near unexpected token `('
Any help would be appreciated. TIA.
Solution 1:
You're nesting single quotes within single quotes. That doesn't work.
Try using "
double quotes"
in the inner expression.
Solution 2:
I found it a much cleaner solution to just create a function and name your alias after the function, like this:
alias localip=GetLocalIP
function GetLocalIP()
{
ip -4 -o addr show eth0 | egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' | head -n 1
}