2013-05-04 2 views
1

Я проверил эту командуКак создать псевдоним правильно

$ nmap -sP 192.168.1.* | grep 192 | awk '{print $5}' 

, который производит этот выход

192.168.1.1 
192.168.1.33 
192.168.1.34 
192.168.1.36 
192.168.1.41 

А потом добавил его в свой файл .bash_alias, а затем источники его.

# This alias shows IPs on the local network 
alias list-ip="nmap -sP 192.168.1.* | grep 192 | awk '{print $5}'" 

Но затем он производит этот выход

Nmap scan report for 192.168.1.1 
Nmap scan report for 192.168.1.33 
Nmap scan report for 192.168.1.34 
Nmap scan report for 192.168.1.36 
Nmap scan report for 192.168.1.41 

У меня нет ни малейшего понятия о том, что я делаю whrong. Я просто хочу, чтобы результат был таким, как я запускаю его в командной строке, и это должно быть.

+0

Я не думаю, что название 'список-ip' в порядке, вы можете попытаться избежать' -' что-то вроде 'list_ip'? – fedorqui

+1

@fedorqui Нет, в '' bash' тире в именах функций/псевдонимов. –

+0

Умм, хорошо знать, @ AdrianFrühwirth, я этого не делаю. Благодаря! – fedorqui

ответ

6

Вы используете двойные кавычки, поэтому $5 расширяется при установке псевдонима. Попробуйте

alias list-ip="nmap -sP 192.168.1.* | grep 192 | awk '{print \$5}'" 

Обратите внимание, что

alias list-ip='nmap -sP 192.168.1.* | grep 192 | awk "{print $5}"' 

будет не работы, потому что расширение до сих пор имеет место, на этот раз, когда вы запускаете псевдоним.

Вы можете также избавиться от awk, например .:

alias list-ip='nmap -sP 192.168.1.* | grep -o "192[0-9.]*"' 
+1

параметр regex отлично звучит! – dinigo

+0

или избавиться от grep, и тогда ваше решение будет работать, даже если у вас нет GNU grep, и, что более важно, он не найдет ложных совпадений, если в другом месте выхода nmap появится «192»: 'alias list- ip = "nmap -sP 192.168.1. * | awk '\ $ 5 ~/^ 192 \ ./ {print \ $ 5}'". –

+0

@ EdMorton Я полностью согласен с тем, что лучше не полагаться на GNU 'grep', но я не согласен с ложными срабатываниями, поскольку, если' nmap' способен реверсировать IP-адрес, его вывод выглядит по-другому (например, 'Nmap scan report for mybox (192.168.xy) '), и в этом случае пятый столбец не то, что вы хотите. Вы можете изменить 'awk' для учета этого, но я думаю, что это более читаемо, а также более надежное, если его вывод находится на другом языке (который, я считаю, он поддерживает). –

Смежные вопросы