ls 说文件存在,但文件说没有这样的文件或目录

ls 说文件存在,但文件说没有这样的文件或目录

因此,当我调整笔记本电脑触摸板输入时,我遇到了这个目录,并发现了一些奇怪的东西。

也许检查命令输出比我尝试描述它更好:

[root@T480-arch serio1]# pwd -P
/sys/devices/platform/i8042/serio1
[root@T480-arch serio1]# file ./*
./bind_mode:   ASCII text
./description: ASCII text
./driver:      symbolic link to ../../../../bus/serio/drivers/psmouse
./drvctl:      writable, regular file, no read permission
./firmware_id: ASCII text
./id:          directory
./modalias:    ASCII text
./power:       directory
./protocol:    ASCII text
./rate:        ERROR: cannot read `./rate' (No such file or directory)
./resetafter:  ERROR: cannot read `./resetafter' (No such file or directory)
./resolution:  ERROR: cannot read `./resolution' (No such file or directory)
./resync_time: ERROR: cannot read `./resync_time' (No such file or directory)
./subsystem:   symbolic link to ../../../../bus/serio
./uevent:      ASCII text
[root@T480-arch serio1]# ls -alFtr | grep -iE "rate|resetafter|resolution|resync_time"
-rw-r--r-- 1 root root 4096 Jul 30 02:28 resync_time
-rw-r--r-- 1 root root 4096 Jul 30 02:28 resolution
-rw-r--r-- 1 root root 4096 Jul 30 02:28 resetafter
-rw-r--r-- 1 root root 4096 Jul 30 02:28 rate

如图所示,bash两者ls都知道有 4 个 r-something 文件,并且root具有权限,但file命令无法识别它们。

另外,如果我尝试使用以下命令编辑它们vim

"rate" [READ ERRORS] 0L, 0C

我的问题是,可能出现这种情况的原因有哪些?具体来说,我正在处理什么“文件”?

由于它位于/sys/,我想它本身不是一个真正的文件,而是一些抽象,就像我们通常在 下看到的那样/dev/,这要归功于

一切都是文件

*nix 系统的哲学。但在这种情况下,file应该告诉我这是一个设备文件或其他东西,但这里不是这种情况。

答案1

/sys是一个虚拟文件系统,其中的文件并不是真正的文件,它们是内核的接口。您遇到的四个文件是由psmouse驱动程序处理的,它们具有以下异常行为ENOENT读取时返回如果被检查的设备有“SMBus 配套设备”。 (这是笔记本电脑上触控板的一个常见功能 - 它们被公开为 PS/2 设备以实现向后兼容性,并且还作为其他总线上的设备公开,以提供对其所有功能的访问。)

作为一般规则,您不能指望大多数文件访问工具能够按原样处理/sys.特别是,其中许多需要在一次操作中读取,并且它们的表观长度往往没有实际依据。

相关内容