linux/windows中最深的目录是什么?

最好有具体的路径例子给我看看,我现在一点数都没有

新技能√

以后片子又有新的方法存了。谢谢 @eccstartup

NTFS:

最长路径为 32,767 个 Unicode 字符,每个目录(或文件)的最大长度为 255 字符。

我刚才试了一下,在 E:\data 目录建了一个长度为 239 的成功了。

E:\data>md 123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789
0123456789

长度为 240 的失败了

E:\data>md 123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890
文件名或扩展名太长。

当我进入子目录(239长度的那个),再新建一个长度为 1 的,失败。

E:\data>cd 123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789
0123456789
E:\data\123456789012345678901234567890123456789012345678901234567890123456789012
34567890123456789012345678901234567890123456789012345678901234567890123456789012
34567890123456789012345678901234567890123456789012345678901234567890123456789012
3456789>md 1
文件名或扩展名太长。

至此,晕了。

看看 NTFS 的百科:http://en.wikipedia.org/wiki/NTFS#Internals

File names are limited to 255 UTF-16 code points. Certain names are reserved in the volume root directory and cannot be used for files. These are $MFT, $MFTMirr, $LogFile, $Volume, $AttrDef, . (dot), $Bitmap, $Boot, $BadClus, $Secure, $Upcase, and $Extend.[3] (dot) and $Extend are both directories; the others are files. The NT kernel limits full paths to 32,767 UTF-16 code points. There are some additional restrictions on code points and file names.

这里面有一句:There are some additional restrictions on code points and file names,我们跟随链接 “Naming Files, Paths, and Namespaces”

In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters.

Windows API 里面定义了一个常量 MAX_PATH,这个常量的值是 260,不过常量值不一定是具体的长度,继续向下看,文档里面有一个例子

For example, the maximum path on drive D is “D:\some 256-character path string

好吧,那就试试

E:\>md 1234567890123456789012345678901234567890123456789012345678901234567890123
45678901234567890123456789012345678901234567890123456789012345678901234567890123
45678901234567890123456789012345678901234567890123456789012345678901234567890123
4567890123456789012345
文件名或扩展名太长。

删除一个字符,再试,删除,再试,…… 最后终于可以了,目录长度 244,啊,你是 MSDN 请来的逗比吗?

不能着急,继续往下看

When using an API to create a directory, the specified path cannot be so long that you cannot append an 8.3 file name (that is, the directory name cannot exceed MAX_PATH minus 12).


留坑吧,一会儿继续填。

  • windows安装了git以后就可以运行shell脚本了吗?
  • 如何将多台主机共用一台主机的带宽,要求既能外界能管理每台主机,并且每台主机能访问外网?
  • gulp文件监听的问题
  • 挺迷幻的 No such file or directory,求科学解释
  • E212: Can’t open file for writing怎么整?
  • apache设置了多域名站点,但是访问第三个域名站点显示的确是第一个域名站点的页面?
  • linux 网络一些概念
  • linux目录无权限进入的问题
  • git这样配置是否会有安全风险?
  • 一个shell的基础编程问题
  • 如何从服务器下载大文件?