sudo ifconfig wlan0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
터미널에서 위 명령을 실행하면 올바른 "내부" IP 주소가 출력됩니다. 예를 들어 별칭으로 전달하려고 하면 다음과 같습니다.
alias intip='sudo ifconfig wlan0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}''
다음 오류가 발생합니다.
alias: addr: | cut -d: -f2 | awk { not found
alias: print not found
alias: } not found
내가 여기서 뭘 잘못하고 있는 걸까?
답변1
중요한 위치에 큰따옴표와 작은따옴표를 사용하는 데 따른 문제:
alias lsa="ls -l | awk '{print \$1}' "
답변2
당신이 잘못하고 있는 것은 별칭을 사용하여 명령에 더 짧은 이름을 부여하거나 자동으로 명령에 인수를 전달하는 것보다 더 복잡한 작업을 수행하는 것입니다. 대신 함수를 사용하면 참조에 대해 걱정할 필요가 없습니다.
intip () {
/sbin/ifconfig wlan0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
}
여기서는 sudo가 필요하지 않으며 ifconfig
보기만 할 때는 권한이 필요하지 않습니다. 그러나 많은 배포판에서는 전체 경로를 제공해야 하는데 ifconfig
루트가 아닌 사용자에게는 그렇지 않은 경우가 많습니다.PATH
그런데, awk에서 완전히 필터링을 수행할 수 있지만, 그런 방식이 더 편하다면 다양한 도구를 자유롭게 사용해 보세요. 한 가지 방법은 다음과 같습니다.
intip () {
/sbin/ifconfig wlan0 | awk 'sub(/^.*inet addr:/,"") {sub(/ .*/,""); print}'
}
인터페이스 이름을 함수에 대한 선택적 매개변수로 쉽게 전달할 수 있습니다.
intip () {
/sbin/ifconfig "${1:-wlan0}" |
awk 'sub(/^.*inet addr:/,"") {sub(/ .*/,""); print}'
}
별칭이 작동하지 않는 이유를 설명하기 위해 작은따옴표를 사용하여 별칭을 구분하고 별칭 텍스트에 사용합니다. 통역사는 귀하의 마음을 읽을 수 없으며 예상되는 내용을 볼 수 없습니다. 바라보다args 및 "종료되지 않은 인용 문자열"/"예기치 않은 EOF"에서 읽은 명령을 사용하여 sh(대시)에서 bash 호출인용문 안에 인용문이 있는 경우도 있고에코가 인용 문자를 무시하는 이유는 무엇입니까?4개의 문자를 입력하여 작은따옴표로 묶인 문자열에 작은따옴표를 효과적으로 포함하는 방법을 알아보세요 '\''
.
답변3
아니면 설치할 수 있습니다moreutils
(적어도 배포판에 사용 가능한 경우) ifdata
.
$ ifdata -pa br0
172.16.1.244
물론 br0 대신 wlan0을 사용할 수도 있습니다.