실행 중이지만 iwconfig | grep -v "no wireless extensions"
-v 옵션이 예상대로 작동하도록 할 수 없습니다. "무선 확장 없음"이 포함된 행을 제외하고 싶습니다. 즉, 활성/작동 중인 무선 인터페이스 또는 호출해야 하는 항목만 표시하고 싶습니다.
처음에는 명령이 출력하는 스트림이 grep으로 파이프되는 스트림과 다를 수 있다고 생각하여 cat myFile | grep -v myExclusionPattern
. 이는 예상대로 작동하므로 -v
예상한 대로 작동한다고 결론을 내립니다. 그런 다음 iwconfig | grep "no wireless extensions"
다시 시도했고 결과가 예상되었습니다. 즉, iwconfig의 출력이 grep으로 파이프되었습니다. 그래서 -v
.iwconfig
grep
이것은 iwconfig의 출력입니다.
enp4s0 no wireless extensions.
docker0 no wireless extensions.
lo no wireless extensions.
wlp5s0 IEEE 802.11 ESSID:"myEssid"
Mode:Managed Frequency:5.24 GHz Access Point: 74:83:C2:75:86:2A
Bit Rate=6 Mb/s Tx-Power=30 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
Link Quality=59/70 Signal level=-51 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:747 Missed beacon:0
요약하다:
grep -v
.grep
cat
iwconfig
의 출력을 파이핑할 때 (1)과 동일한 동작을 재현할 수 없습니다grep
.
grep -v에서 다음 질문을 읽었지만 그 중 어느 것에서도 위 질문에 대한 답을 찾을 수 없습니다.
답변1
iwconfig
인터페이스에 대한 무선 확장이 발견되었는지 여부에 따라 표준 출력 및 표준 오류로 출력됩니다. 파이프는 표준 출력에만 영향을 미칩니다.
표준 오류 스트림으로 전송된 출력을 제거하는 예(무선 확장이 포함된 인터페이스만 표시됨):
$ /usr/sbin/iwconfig 2>/dev/null
wlp4s0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=22 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
표준 출력 스트림으로 전송된 출력을 제거하는 예( iwconfig
무선 확장을 찾지 못한 인터페이스만 표시):
$ /usr/sbin/iwconfig >/dev/null
lo no wireless extensions.
enp0s31f6 no wireless extensions.
wwan0 no wireless extensions.
docker0 no wireless extensions.
br-ca679f9ee354 no wireless extensions.
veth232fd86 no wireless extensions.
vboxnet0 no wireless extensions.
답변2
아무도 이 대안을 언급하지 않았지만 사용을 고려할 것입니다.
iwconfig 2>&1 | grep -v "no wireless extensions"
또한 해결책(어쩌면 더 우아할까요?)
이제 오류와 일반 출력이 모두 동일한 파일 설명자(표준 출력)로 전송되며, 이는 궁극적으로 전체 데이터를 필터링할 수 있는 grep으로 파이프됩니다.