lsはファイルが存在すると言いますが、fileはそのようなファイルやディレクトリがないと言います。

lsはファイルが存在すると言いますが、fileはそのようなファイルやディレクトリがないと言います。

それで、ノートパソコンのタッチパッド入力を調整している間、このディレクトリを見つけて奇妙なことを見つけました。

おそらく、説明するよりもコマンド出力をチェックする方が良いかもしれません。

[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両方ともls4つのr-somethingファイルがあり、root権限があることを知っていますが、fileコマンドはそれを認識しません。

また、次のように編集しようとすると、次のようになりますvim

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

私の質問は、これが起こる可能性がある理由です。具体的にどのような「ファイル」を使用していますか?

にあるので、それ/sys/自体は実際のファイルではありませんが、一般的に以下に見られるようないくつかの抽象化です/dev/

すべてがファイルです

*nixシステムの哲学。ただし、この場合はfileこれがデバイスファイルであることを知らせる必要がありますが、ここではそうではありません。

答え1

/sysこれは仮想ファイルシステムであり、その中にあるファイルは実際のファイルではなくカーネルへのインターフェースです。見つかった4つのファイルはpsmouseドライバによって処理され、次のような異常な動作を示します。ENOENT読みながら戻る確認しているデバイスに「SMBus Companion Device」がある場合。 (これはラップトップトラックパッドの一般的な機能です。トラックパッドは以前のバージョンとの互換性のためにPS / 2デバイスとして表示され、すべての機能へのアクセスを提供するために他のバス上のデバイスとしても表示されます。)

通常、ほとんどのファイルアクセスツールはそのままファイルを処理することを期待できません/sys。特に、ファイルの多くは単一の操作で読み取る必要があり、見かけの長さは実際の根拠がないことがよくあります。

関連情報