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

时间:2017-04-20 15:51:54

标签: linux windows path

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

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

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

  3. 感谢。

1 个答案:

答案 0 :(得分:1)

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

您有基本的DOS路径:

  • 绝对:d:\dir\subdir\file
  • 当前目录相对:file.\subdir\file..\otherfile
  • 根相对/当前驱动:\dir\subdir\file
  • 驾驶相对:d:file
  • “上游”:d:\dir\..\otherdir\file等。
  • UNC:\\server\share\file
  • 云端硬盘/音量:d:

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

Windows NT进一步增加了并发症:

  • 命名流:d:\dir\subdir\file:stream
  • 转义/长路径:\\?\d:\file
  • Escaped UNC:\\?\UNC\server\share\file
  • 设备路径:\\.\PhysicalDisk1
  • Volume GUID path\\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\

如果您在较高的shell级别操作,还可以使用其他几种类型来处理:

  • shell协议:shell:SendTo
  • Shell名称空间:::{someGUID}\::{anotherGUID}

大多数功能也会接受/作为路径分隔符。甚至像d:f:s那样疯狂的事情(文件f中的流s相对于驱动器d上的当前目录)应该被视为有效。

有关详细信息,请参阅MSDN

另一方面,Linux仅将/和空字节(\0)视为特殊,并允许您在路径中使用换行符等。如果您正在处理shell脚本中的路径,则通常可以使用IFS。阅读this rant for more information