V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SakuraSa
V2EX  ›  程序员

windows 不能命名文件为 con

  •  
  •   SakuraSa ·
    SakuraSa · 2020-10-16 16:04:57 +08:00 · 5090 次点击
    这是一个创建于 1260 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我最近入职了新公司,公司暂时 mac 缺货,于是我需要用一段时间 windows 做开发机。

    本来我觉得:“反正开发代码,操作系统就是做一个 IDE 的容器,用 windows 也没什么问题。”

    可是马上我就被打脸了: 公司的一个项目里,名字叫做 con 的文件统统 checkout 不下来(无论后缀为什么

    google 了一下,发现 con 居然是 windows 的保留字,不允许命名文件或文件名为 con/nul/aux 等等。。

    于是,我只能在虚拟机里开 ide 来开发代码了。。。

    35 条回复    2020-10-18 07:42:11 +08:00
    kindjeff
        1
    kindjeff  
       2020-10-16 16:12:26 +08:00   ❤️ 29
    第一次发现这件事的时候我还是小男孩,如今已经是俩个孩子的妈了
    Yumwey
        2
    Yumwey  
       2020-10-16 16:16:03 +08:00   ❤️ 1
    我证明,楼上是我兄弟。
    JJstyle
        3
    JJstyle  
       2020-10-16 16:24:18 +08:00   ❤️ 3
    @kindjeff 你这小男孩是这么当妈的?!
    yangheng4922
        5
    yangheng4922  
       2020-10-16 16:31:30 +08:00
    git bash touch con 可以创建 con 的文件
    xiangyuecn
        6
    xiangyuecn  
       2020-10-16 16:42:01 +08:00
    youla
        7
    youla  
       2020-10-16 16:49:35 +08:00
    用 git-bash

    mkdir con

    可以。

    还有命名 nul 也不行哦。
    youla
        8
    youla  
       2020-10-16 16:50:26 +08:00
    才发现帖子里提到了,一目五十行没注意。
    Tink
        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.
    Raven316
        10
    Raven316  
       2020-10-16 17:23:07 +08:00
    felixcode
        11
    felixcode  
       2020-10-16 17:24:51 +08:00
    所以 Windows 不适合开发?开发还得用 Mac ?
    azkaban
        12
    azkaban  
       2020-10-16 17:54:14 +08:00
    在 wsl 里试了一下,建啥目录都没问题
    exceloo
        13
    exceloo  
       2020-10-16 17:57:03 +08:00
    难道你们不知道以前 win 系统在运行中输入 /con/con 会导致死机吗?
    暴露年龄了。。。
    whywhywhy
        14
    whywhywhy  
       2020-10-16 18:41:09 +08:00
    @exceloo Windows 98
    syuraking
        15
    syuraking  
       2020-10-16 18:46:38 +08:00
    DOS 时代 con 就是设备的标识符,只能说明,你不懂微软的 DOS……
    xiri
        16
    xiri  
       2020-10-16 19:27:21 +08:00 via Android
    这是 dos 时代遗留下来的,微软为了兼容性一直没有修改
    lovecy
        17
    lovecy  
       2020-10-16 19:40:09 +08:00
    我再说一个事,SVN 上面有两个目录,名字一样但是大小写不同,checkout 到 windows 机器上会因为重名,导致两个目录的内容被奇怪的合并到一起
    hakono
        18
    hakono  
       2020-10-16 19:46:35 +08:00 via Android
    不是,楼主你为啥不在 wsl/wsl2 下开发
    BostonCorbett
        19
    BostonCorbett  
       2020-10-16 20:02:22 +08:00
    @kindjeff 什么意思?
    jim9606
        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"这样的,纯属自己设限。
    realpg
        21
    realpg  
       2020-10-16 20:36:58 +08:00
    2002 年我就会

    netstat -anop tcp | find ":80" > con
    ysc3839
        22
    ysc3839  
       2020-10-16 20:45:22 +08:00 via Android
    @jim9606 不能新建点开头的文件是个 bug,现在已经被修复了。而不能命名为 CON 则是兼容问题。
    lithiumii
        23
    lithiumii  
       2020-10-16 20:49:25 +08:00 via Android
    win 不能建立,但可以用 wsl 建立
    但也没用,回到 win 里也不能访问,好像还不能删除
    wangxiaoaer
        24
    wangxiaoaer  
       2020-10-16 20:55:09 +08:00
    多谢楼主,以前还真不知道这个。
    guanaco
        25
    guanaco  
       2020-10-16 21:07:10 +08:00
    copy con ,好久没用了
    lxilu
        26
    lxilu  
       2020-10-16 21:18:47 +08:00   ❤️ 1
    @lovecy #17 fsutil file setCaseSensitiveInfo X:\path enable
    ysc3839
        27
    ysc3839  
       2020-10-16 23:25:04 +08:00 via Android
    @lxilu 顺带一提,Windows 有个注册表项控制文件系统是否区分大小写,但是别开!我之前开了之后蓝牙直接用不了了……
    by73
        28
    by73  
       2020-10-16 23:42:58 +08:00
    确实很烦人。。之前在 Windows 下 checkout kernel 就出现了这个问题。。只能说 Windows 兼容性太强了(

    后来改用了虚拟机 = =
    lihongming
        29
    lihongming  
       2020-10-16 23:58:09 +08:00 via iPhone
    宁可装个 Linux 桌面版也不要用 Windows 做开发,坑太多了。

    现在除了 Windows 都是类 Unix 的天下,传说将来 Windows 也要像 Mac 一样在类 Unix 系统的基础上重构。
    locoz
        30
    locoz  
       2020-10-17 00:09:05 +08:00 via Android
    还有冒号也是,Linux 和 Mac 下都可以使用,但 Windows 是不行的。
    lxml
        31
    lxml  
       2020-10-17 00:20:09 +08:00 via Android
    @lovecy 因为 Windows 默认的磁盘格式是大小写不敏感的,非常拉胯
    ysc3839
        32
    ysc3839  
       2020-10-17 00:39:03 +08:00 via Android
    @lxml Windows 用的 NTFS 是大小写敏感的,且不能关闭,Windows 是在别的层次做了大小写处理。
    macOS 的文件系统才是可选是否大小写敏感,并且默认选的是不敏感。
    optional
        33
    optional  
       2020-10-17 00:50:14 +08:00 via Android
    @lxml Mac 中枪,默认大小写不敏感
    baobao1270
        34
    baobao1270  
       2020-10-17 18:34:16 +08:00
    其实从 NTFS/ReFS 的层面上来说,它们只要文件名里没有 "/" or "\0" 其他文件名都可以,毕竟这两个 FS 可以在 LINUX 下面跑。这层限制只是 Explorer 层面以及一部分 Windows API 层面的限制。
    changwei
        35
    changwei  
       2020-10-18 07:42:11 +08:00 via Android
    以前 windows 服務器上面的不死僵尸 webshell 就是利用文件扩展名带这些保留字符实现隐藏和免杀的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2853 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:19 · PVG 19:19 · LAX 04:19 · JFK 07:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.