作为后续这问题,我试图确定哪个命令/命令序列可以为我提供下面列出的哪个网络接口是无线接口 - 通过搜索存在/sys/class/net
符号链接(再次)的接口。wireless
我能得到的最接近的是 using
ls -LR | grep wireless
,尽管我想在第一个匹配处停止 - 尝试使用-m 1
, 管道到head -1
但后来我丢失了找到匹配的文件路径,这实际上就是我所追求的,匹配本身是没用的。没有设法解决这个问题(尝试添加 -H
以及-m 1
,没有交易)。另外,为什么
find /sys/class/net -type l
单靠自己还不能实现这一点呢? (使用sudo
给了我相同的结果,所以这不是这些链接不可见的问题)
答案1
您可以使用 glob 要求 shell 为您找到它,例如
echo /sys/class/net/*/wireless
当的行为不无线接口的存在取决于您的 shell 及其通配配置选项。
find
默认情况下不遵循符号链接;添加-L
将改变这一点,但随后你会明白为什么它默认不遵循符号链接:find -L /sys/class/net -name wireless
(符号链接引入循环)。
您可以将完整的支票写为
for ifc in /sys/class/net/*; do
if [ "$(cat ${ifc}/operstate)" = "up" ] && [ -d "${ifc}/wireless" ]; then
echo "${ifc##*/}"
fi
done