我最近入职了新公司,公司暂时 mac 缺货,于是我需要用一段时间 windows 做开发机。
本来我觉得:“反正开发代码,操作系统就是做一个 IDE 的容器,用 windows 也没什么问题。”
可是马上我就被打脸了: 公司的一个项目里,名字叫做 con 的文件统统 checkout 不下来(无论后缀为什么
google 了一下,发现 con 居然是 windows 的保留字,不允许命名文件或文件名为 con/nul/aux 等等。。
于是,我只能在虚拟机里开 ide 来开发代码了。。。
1
kindjeff 2020-10-16 16:12:26 +08:00 29
第一次发现这件事的时候我还是小男孩,如今已经是俩个孩子的妈了
|
2
Yumwey 2020-10-16 16:16:03 +08:00 1
我证明,楼上是我兄弟。
|
4
jiumingzhu 2020-10-16 16:24:47 +08:00
|
5
yangheng4922 2020-10-16 16:31:30 +08:00
git bash touch con 可以创建 con 的文件
|
6
xiangyuecn 2020-10-16 16:42:01 +08:00
|
7
youla 2020-10-16 16:49:35 +08:00
用 git-bash
mkdir con 可以。 还有命名 nul 也不行哦。 |
8
youla 2020-10-16 16:50:26 +08:00
才发现帖子里提到了,一目五十行没注意。
|
9
Tink 2020-10-16 17:02:14 +08:00
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9.
|
10
Raven316 2020-10-16 17:23:07 +08:00
|
11
felixcode 2020-10-16 17:24:51 +08:00
所以 Windows 不适合开发?开发还得用 Mac ?
|
12
azkaban 2020-10-16 17:54:14 +08:00
在 wsl 里试了一下,建啥目录都没问题
|
13
exceloo 2020-10-16 17:57:03 +08:00
难道你们不知道以前 win 系统在运行中输入 /con/con 会导致死机吗?
暴露年龄了。。。 |
15
syuraking 2020-10-16 18:46:38 +08:00
DOS 时代 con 就是设备的标识符,只能说明,你不懂微软的 DOS……
|
16
xiri 2020-10-16 19:27:21 +08:00 via Android
这是 dos 时代遗留下来的,微软为了兼容性一直没有修改
|
17
lovecy 2020-10-16 19:40:09 +08:00
我再说一个事,SVN 上面有两个目录,名字一样但是大小写不同,checkout 到 windows 机器上会因为重名,导致两个目录的内容被奇怪的合并到一起
|
18
hakono 2020-10-16 19:46:35 +08:00 via Android
不是,楼主你为啥不在 wsl/wsl2 下开发
|
19
BostonCorbett 2020-10-16 20:02:22 +08:00
@kindjeff 什么意思?
|
20
jim9606 2020-10-16 20:17:02 +08:00
感觉这是文件 API 的路径处理出现歧义导致的,资源管理器不能创建,删不掉,能显示文件存在,但文件属性不能正常显示。
看了下这个问答( https://stackoverflow.com/questions/17883481/delete-a-file-named-nul-on-windows),用 UNC path 可以解决。 @jiumingzhu 的文档也只是说不建议用保留字,至少文件系统本身并没有这个限制。 你要知道,以前的资源管理器是不允许新建句号开头的文件的,例如".nomedia"这样的,纯属自己设限。 |
21
realpg 2020-10-16 20:36:58 +08:00
2002 年我就会
netstat -anop tcp | find ":80" > con |
22
ysc3839 2020-10-16 20:45:22 +08:00 via Android
@jim9606 不能新建点开头的文件是个 bug,现在已经被修复了。而不能命名为 CON 则是兼容问题。
|
23
lithiumii 2020-10-16 20:49:25 +08:00 via Android
win 不能建立,但可以用 wsl 建立
但也没用,回到 win 里也不能访问,好像还不能删除 |
24
wangxiaoaer 2020-10-16 20:55:09 +08:00
多谢楼主,以前还真不知道这个。
|
25
guanaco 2020-10-16 21:07:10 +08:00
copy con ,好久没用了
|
27
ysc3839 2020-10-16 23:25:04 +08:00 via Android
@lxilu 顺带一提,Windows 有个注册表项控制文件系统是否区分大小写,但是别开!我之前开了之后蓝牙直接用不了了……
|
28
by73 2020-10-16 23:42:58 +08:00
确实很烦人。。之前在 Windows 下 checkout kernel 就出现了这个问题。。只能说 Windows 兼容性太强了(
后来改用了虚拟机 = = |
29
lihongming 2020-10-16 23:58:09 +08:00 via iPhone
宁可装个 Linux 桌面版也不要用 Windows 做开发,坑太多了。
现在除了 Windows 都是类 Unix 的天下,传说将来 Windows 也要像 Mac 一样在类 Unix 系统的基础上重构。 |
30
locoz 2020-10-17 00:09:05 +08:00 via Android
还有冒号也是,Linux 和 Mac 下都可以使用,但 Windows 是不行的。
|
32
ysc3839 2020-10-17 00:39:03 +08:00 via Android
@lxml Windows 用的 NTFS 是大小写敏感的,且不能关闭,Windows 是在别的层次做了大小写处理。
macOS 的文件系统才是可选是否大小写敏感,并且默认选的是不敏感。 |
34
baobao1270 2020-10-17 18:34:16 +08:00
其实从 NTFS/ReFS 的层面上来说,它们只要文件名里没有 "/" or "\0" 其他文件名都可以,毕竟这两个 FS 可以在 LINUX 下面跑。这层限制只是 Explorer 层面以及一部分 Windows API 层面的限制。
|
35
changwei 2020-10-18 07:42:11 +08:00 via Android
以前 windows 服務器上面的不死僵尸 webshell 就是利用文件扩展名带这些保留字符实现隐藏和免杀的
|