因此,当我调整笔记本电脑触摸板输入时,我遇到了这个目录,并发现了一些奇怪的东西。
也许检查命令输出比我尝试描述它更好:
[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
.特别是,其中许多需要在一次操作中读取,并且它们的表观长度往往没有实际依据。