Windows和Linux下的路径名分别是什么语法?



>我正在考虑编写一个程序来检查路径名是否有效。

  1. Windows下路径名(包括相对路径名)的语法是什么?我用谷歌搜索了一段时间,我只找到了有关无效路径名个别情况的错误报告。

  2. 同样的问题适用于Linux?虽然我大部分时间都在使用 Linux,但我不知道是否有定义它的标准文档。波西斯?

谢谢。

Windows有多个层(NT,Win32,Posix/WSL)和多个路径类型,但您可能指的是DOS/Win32类型,并且该主题本身就足够复杂。

您有基本的 DOS 路径:

  • 绝对:d:dirsubdirfile
  • 当前目录相对:file.subdirfile..otherfile
  • 根相对/当前驱动器:dirsubdirfile
  • 驱动器相对:d:file
  • "上游":d:dir..otherdirfile等。
  • UNC:\serversharefile
  • 驱动器/卷:d:

还有特殊的保留名称,如NULCONAUXCOM1

Windows NT增加了进一步的复杂性:

  • 命名流:d:dirsubdirfile:stream
  • 逃逸/长路径:\?d:file
  • 转义的UNC:\?UNCserversharefile
  • 设备路径:\.PhysicalDisk1
  • 卷 GUID 路径:\?Volume{26a21bda-a627-11d7-9931-806e6f6e6963}

如果您在更高的 shell 级别操作,您还需要处理几种其他类型:

  • 外壳协议:shell:SendTo
  • 外壳命名空间:::{someGUID}::{anotherGUID}

大多数函数还将接受/作为路径分隔符。即使是像d:f:s这样疯狂的东西(文件 f 中的流 s 相对于驱动器 d 上的当前目录)也应该被认为是有效的。

有关详细信息,请参阅 MSDN

。另一方面,Linux仅将/和空字节()视为特殊,并允许您在路径中使用换行符等。如果要处理 shell 脚本中的路径,通常可以使用 IFS。阅读此咆哮以获取更多信息。

相关内容

  • 没有找到相关文章

最新更新