我想知道是否有办法知道mkdir可以创建的目录名的最大大小。我凭经验发现我的版本8.21在Ubuntu 14.04上的限制是1024.
$ mkdir $(python -c "print('x' * 1024)")
$ echo $?
0
$ mkdir $(python -c "print('x' * 1025)")
mkdir: cannot create directory ‘... (x repeated 1025 times) ...’: File name too long
根据pathconf(使用pjd(POSIX Filesystem测试套件)中的工具):
$ # pathconf("/", NAME_MAX)
$ ./pjdfstest pathconf / _PC_NAME_MAX
255
$ # pathconf("/", PATH_MAX)
$ ./pjdfstest pathconf / _PC_PATH_MAX
4096
知道价值观不同的原因吗?
编辑1:从命令行删除用户名。
答案 0 :(得分:0)
Ubuntu 14.04附带了coreutils 8.21,其mkdir
实用程序对目录名长度没有任何限制。实际上,传递给execve
的参数列表的长度(通常是几兆字节)以及路径的PATH_MAX
和NAME_MAX
配置值的值都有限制。
在Linux上,glibc的pathconf
函数通过在给定路径上调用NAME_MAX
并在结构中使用statfs
值来确定fr_namelen
。 s返回。因此/
可能有一个值,而pjdfstest
目录的另一个值如果它位于不同的文件系统中。在评论中,您说文件系统为NAME_MAX
返回0,所以看起来它没有完全实现userland代码所期望的接口。您可能需要查看文件系统的源代码,以了解它如何实现文件名和路径名限制。