Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

share|improve this question
add comment

2 Answers

up vote 2 down vote accepted

You're nesting single quotes within single quotes. That doesn't work.

Try using "double quotes" in the inner expression.

share|improve this answer
    
Or escaped single quotes. –  Benjamin Bannier Mar 31 '12 at 22:16
    
Thank you soooo much. I knew it was something simple, I was just looking at it for too long. –  n8felton Mar 31 '12 at 22:26
2  
You cannot escape single quotes inside a single quoted string: gnu.org/software/bash/manual/bashref.html#Single-Quotes –  glenn jackman Apr 1 '12 at 1:56
add comment

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
}
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.