发布
社区首页 >问答首页 >/sys文件中的Grep不返回任何内容。

/sys文件中的Grep不返回任何内容。
EN

Unix & Linux用户
提问于 2020-07-10 12:16:35
回答 2查看 524关注 0票数 6

我想在/sys/class/tty/*目录中搜索一个字符串。所以我试着:

代码语言:javascript
代码运行次数:0
复制
# grep -rn path -e pattern

但什么也没回。示例:

代码语言:javascript
代码运行次数:0
复制
# cat /sys/class/tty/ttySTM0/iomem_base 
0x40010000

# ls -l /sys/class/tty/ttySTM0/iomem_base 
-r--r----- 1 root root 4096 Jan 17 10:37 /sys/class/tty/ttySTM0/iomem_base

# grep -rn /sys/class/tty/ -e 0x40010000
#

如果我在另一个目录中使用相同的语法,它似乎会工作:

代码语言:javascript
代码运行次数:0
复制
# grep -rn /opt -e Could
# /opt/logs/joku1_log.txt:29:Could not read interface wlan0 flags: No such device

这样的研究有什么需要注意的吗?我的目标是找到哪个tty有特定的iomem_base地址。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-07-10 13:11:23

使用这两种方法中的任何一种:

代码语言:javascript
代码运行次数:0
复制
grep -rn /sys/class/tty/* -e 0x40010000 2> /dev/null

grep -Rn /sys/class/tty/ -e 0x40010000 2> /dev/null

第一个命令中的glob是必需的,以便使它遵循命令行中未指定的符号链接,因为/sys/class/tty的内容都是指向/sys/devices/virtual/tty/sys/devices/platform/serial####/tty内容的符号链接。

默认情况下,第二个命令中的-R遵循符号链接,不需要任何glob。

我添加了2> /dev/null来向/dev/null发送Input/output errorPermission denied消息,因为当所有这些都没有返回时,输出更容易阅读。

票数 6
EN

Unix & Linux用户

发布于 2020-07-10 13:17:55

/sys/class/tty中的条目是指向目录的符号链接,它们连接到/sys的另一部分,这是根据设备内部连接的方式来组织的。grep -r不遵循指向目录的符号链接。

grep -R遵循符号链接,但递归遍历/sys时跟踪目录是个坏主意,因为存在无限循环(/sys/foo/bar是指向/sys/corge/wibble的链接,它链接到/sys/foo)。

因此,请更精确地指定路径。这足以搜索所有tty设备的所有文件:

代码语言:javascript
代码运行次数:0
复制
grep -l -r -x 0x40010000 /sys/class/tty/*/

顺便说一句,由于您已经知道了文件的全部内容并想要文件名,所以-n是无用的,-l为您提供了整洁的输出。-x有助于避免误报(但是这里没有必要,因为iomem_base的内容有固定的长度)。

但既然你知道文件的基本名称,就搜索那个。

代码语言:javascript
代码运行次数:0
复制
grep -l -x 0x40010000 /sys/class/tty/*/iomem_base
票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/597749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档