2013-05-04 2 views
1

나는이 명령이 출력제대로

192.168.1.1 
192.168.1.33 
192.168.1.34 
192.168.1.36 
192.168.1.41 

을 생산

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

을 테스트 한 다음 내 .bash_alias 파일에 추가 한 다음 공급했습니다.

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

는 그러나 다음은이 출력 내가 whrong 뭘하는지에 대한 단서가있어

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 

을 생산하고 있습니다. 출력을 명령 줄에서 실행할 때와 같아야합니다.

+0

내가 이름'리스트 ip' 괜찮 생각하지 않는다, 당신은'list_ip' 같은 뭔가 -''피하려고 할 수 있으며, awk 제거 할 수 있습니까? – fedorqui

+1

@fedorqui 아니요, 'bash'에서 대시는 함수/별칭 이름에서 잘됩니다. –

+0

어, 잘 알고, @ AdrianFrühwirth, 나는 thougt하지 않습니다. 감사! – 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}"' 

것이다 확장은 여전히 ​​장소 별칭을 실행하는이 시간이 필요하지 작업 때문이다.

또한 예컨대 :

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

regex 옵션은 훌륭하게 들립니다. – dinigo

+0

또는 grep을 제거하면 GNU grep을 사용할 수 없을 때도 솔루션이 작동하며 "192"가 nmap 출력의 다른 위치에 있으면 false-matches를 찾지 못할 것입니다. '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)')이 경우 5 번째 열은 원하는 것이 아닙니다. 'awk'을 변경하여 계정을 변경할 수 있지만 출력이 다른 언어 (지원한다고 생각하는 언어) 인 경우이 언어가 더 읽기 쉽고 더 강력하다고 생각합니다. –