今天在 Windows 上 clone 了一份 linux kernel 代码,checkout 的时候报错:
error: invalid path 'drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c'
结果发现是 Windows 不允许将文件名命名为 aux.c ……
准确地说,是不允许命名为任何以 aux 开头的文件,不管什么后缀名
![]() | 1 Eiden 2024-02-23 14:22:52 +08:00 无法复现 |
2 registerrr 2024-02-23 14:26:29 +08:00 无法复现 |
![]() | 3 villivateur OP |
有些文件名是保留,aux 、con 、nul 之类的好像是 DOS 的设备名称 |
![]() | 5 Goooooos 2024-02-23 14:42:10 +08:00 |
![]() | 6 angry41 2024-02-23 14:44:18 +08:00 win11 ,无法复现 |
![]() | 7 Nooooobycat 2024-02-23 14:44:23 +08:00 windows11 23h2 22631.3155 可以创建,没这个限制 windows10 22h2 19045.4046 无法创建,复现成功 |
![]() | 8 masterclock 2024-02-23 14:47:36 +08:00 CON 、LPTx 、COMx 、NUL 等都不行的 |
9 zqx 2024-02-23 14:51:09 +08:00 via Android 巧了,我今天把 linux 子系统复制到另一个盘,也是一些内核文件无法复制。 |
10 peanutBark 2024-02-23 14:51:10 +08:00 ChatGpt 在 Windows 操作系统中,有一些保留的文件名,这些文件名与早期的 MS-DOS 和 Windows 版本的历史有关。这些保留的文件名包括 CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3 等。 这些名称被保留是因为它们是用于特定设备或系统功能的特殊文件名。例如: CON 代表控制台。 PRN 代表打印机。 AUX 代表辅助设备,通常是指串行端口。 NUL 代表空设备。 由于这些名称被操作系统用于特殊目的,所以不能将它们用作普通文件或文件夹的名称。如果尝试使用这些保留名称创建文件或文件夹,Windows 通常会报错或拒绝操作。这是为了避免与系统功能发生冲突或混淆。 |
![]() | 11 hronro 2024-02-23 14:52:50 +08:00 确实逆天 |
![]() | 12 Tumblr 2024-02-23 14:53:22 +08:00 |
![]() | 13 Cooky 2024-02-23 14:53:58 +08:00 via Android ![]() windows 在命名的一些限制,你用 msys2 里的 shell 就可以建这些名字的文件 |
![]() | 15 Kroos 2024-02-23 15:30:50 +08:00 |
![]() | 16 villivateur OP @Kroos 哈哈,这是不是证明了 Onedrive 服务器是 Windows server |
![]() | 17 geelaw 2024-02-23 15:43:08 +08:00 是 Win32 禁止使用 AUX 等 DOS 设备名作为文件名,另外这个从 MS-DOS 时代就有了。关于为什么加任意扩展名、在任意目录都不行,参考 https://devblogs.microsoft.com/oldnewthing/20031022-00/?p=42073 |
![]() | 19 kokutou 2024-02-23 16:27:11 +08:00 cmd 可以的 windows 有保留字 gui 创建的时候是不行的 |
20 caiqichang 2024-02-23 16:42:02 +08:00 win10 可以通过 wsl 创建修改 |
21 PrinceofInj 2024-02-23 17:10:52 +08:00 越来我真的老了 |
![]() | 22 gefranks 2024-02-23 17:31:48 +08:00 看到这个文件名的时候我就想起 MSDOS 的保留字了. |
![]() | 23 clorischan 2024-02-23 22:48:04 +08:00 win11 gui 可以创建 |
![]() | 24 mmdsun 2024-02-24 17:47:25 +08:00 via iPhone NUL 也不行。这和 Linux 下不能创建/dev/null 文件一样 |