console.error(`Unable to load nonexistent manifest entry ‘islands/voting-prompt’. Check that your file path is correct.`)

显示无线网络接口:

$ sudo iwconfig | grep wlp4s0 
lo        no wireless extensions.

enp3s0    no wireless extensions.

nekoray-tun  no wireless extensions.

wlp4s0    IEEE 802.11  ESSID:"Redmi_A6F0"  

为什么结果不只是一行?预期结果:

wlp4s0    IEEE 802.11  ESSID:"Redmi_A6F0"  

4

  • 因为只有一行包含“wlp4s0”?请更详细地解释您想要实现的目标以及您尝试过的方法。请将预期输出与实际输出分开。


    – 

  • 1
    @DanielB 他已经展示了他尝试过的内容以及他期望的内容。除了为了简化而过度简化之外,我看不出还有什么比这更清楚的了。如果只有一行包含wlp4s0,他想知道为什么他的命令的输出不只包含该行,而是包含每一行。


    – 

  • 1
    恰恰相反。这个问题非常不明确。事实上,虽然你的回答让作者满意,但这并没有正确解释发生了什么:带有“无无线扩展”的行打印在stderr上,这就是为什么它们没有被过滤的原因grep


    – 

  • @DanielB 我看不出哪里不清楚。提问者想要某个输出,但没有得到。我已将您所说的内容添加到我的答案中,因为这样确实可以更好地解释这一点,但话虽如此,该人似乎对获得问题中所需的输出更感兴趣。


    – 


最佳答案
1

你不应该使用grep它。只需运行sudo iwconfig wlp4s0以获取有关该特定接口的信息即可

回到你的问题,你看到的情况是因为iwconfig写入 stdout 和 stderr。你可以通过禁用其中一个流轻松看到这一点

$ sudo iwconfig 2>/dev/null     # Prints only stdout
wlo2      IEEE 802.11  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on

$ sudo iwconfig 1>/dev/null     # Prints only stderr
lo        no wireless extensions.

enp69s0   no wireless extensions.
...

这就是为什么 Nasir Riley 的答案中的这些命令有效,因为 stderr 被重定向到 stdout,以便 grep/sed/awk 可以读取该流

iwconfig 2>&1 | grep wlp4s0
iwconfig 2>&1 | sed -n '/wlp4s0/p'
iwconfig 2>&1 | awk '/wlp40/ {print}'

echo $(iwconfig 2>&1) > file是完全错误的,因为没有双引号,shell,即删除所有换行符。这意味着的输出iwconfig完全连接并用空格分隔,这也是错误的,因为上述命令已经确认iwconfig输出包含多行

echo "$(iwconfig 2>&1)" > file可以,但是会陷入,类似于。只需使用sudo iwconfig >file 2>&1sudo iwconfig &>file

1

  • 无需使用echoanjd/或将输出附加到文件即可获得问题中所需的输出。这只是在我的答案中显示由于标准输出和标准错误连接而发生的情况,并且使用2>&1将两者都发送到stdout。我给出的实际上提供所需输出的命令不包括echo并只是将所有内容发送到stdout以便grepsed和“awk”可以对其进行操作。


    –