readonly Asked: 2009-05-19 09:27:09 +0800 CST2009-05-19 09:27:09 +0800 CST 2009-05-19 09:27:09 +0800 CST Linux上的文件名长度限制? 772 Linux 上是否有任何文件名或路径长度限制? linux limits 8 个回答 Voted Best Answer WerkkreW 2009-05-19T09:29:14+08:002009-05-19T09:29:14+08:00 请参阅有关文件系统比较的 Wikipedia 页面,尤其是在最大文件名长度列中。 以下是流行文件系统中的一些文件名长度限制: BTRFS 255 bytes exFAT 255 UTF-16 characters ext2 255 bytes ext3 255 bytes ext3cow 255 bytes ext4 255 bytes FAT32 8.3 (255 UCS-2 code units with VFAT LFNs) NTFS 255 characters XFS 255 bytes sfp 2011-09-01T00:58:24+08:002011-09-01T00:58:24+08:00 我在这里读到路径长度限制在系统标头中。文件名长度限制也在那里。在我的系统上是文件: /usr/src/linux-headers-2.6.38-10/include/linux/limits.h 和 C-lang 定义: #define NAME_MAX 255 /* # chars in a file name */ #define PATH_MAX 4096 /* # chars in a path name including nul */ 还有更多。 oHo 2014-05-24T23:35:19+08:002014-05-24T23:35:19+08:00 我参考了其他答案,请点赞。 Linux 上是否有任何文件名或路径长度限制? 是的,文件名和路径名长度受以下限制: WerkkreW所述的文件系统限制; 中定义的常量,linux/limits.h如sfp 所述。 要动态获取这些属性: 使用函数pathconf,并fpathconf按照Michael Aaron Safyan的建议 按照dogbane的解释,创建一个越来越长的文件名(或路径名) 使用timgetconf建议的命令,该命令在 Linux 上也可用: $ getconf NAME_MAX /mnt/sda2/ 255 $ getconf PATH_MAX /mnt/sda3/ 4096 Ivan 2009-05-19T09:43:27+08:002009-05-19T09:43:27+08:00 为了节省时间(并将其锚定到内存中): ext2、ext3、ext4、zfs:没有路径名限制;255 字节的文件名限制。 jj33 2009-05-19T10:15:49+08:002009-05-19T10:15:49+08:00 这些是文件系统名称长度。“linux”本身也有一些。例如,来自 bits/stdio_lim.h: # define FILENAME_MAX 4096 Björn Lindqvist 2016-03-23T10:31:44+08:002016-03-23T10:31:44+08:00 无法以可移植的方式确定 Linux 上的最大路径长度。在我的系统上: $ getconf PATH_MAX / 4096 $ getconf _POSIX_PATH_MAX / 4096 但我可以轻松创建比 4096 个字符长得多的路径。而是将PATH_MAX其视为下限。保证您能够创建这么长的路径,但您也可以创建更长的路径。 andy 2015-01-16T18:17:46+08:002015-01-16T18:17:46+08:00 您应该始终使用pathconf或类似这样的函数来获取有关指定项目的运行时值,正如此页面所述: 然而,应该注意的是,许多列出的限制不是一成不变的,并且在运行时,限制的值可能与此标头中给出的值不同,原因如下: 限制取决于路径名。 编译和运行时机器之间的限制不同。 由于这些原因,应用程序可以使用 fpathconf()、pathconf() 和 sysconf() 函数来确定运行时限制的实际值。 Bohdan Voloshyn 2014-12-05T17:49:13+08:002014-12-05T17:49:13+08:00 它在系统limits.h头文件中指定。 这是这些文件之一: cat /usr/include/linux/limits.h ... #define NAME_MAX 255 /* # chars in a file name */ #define PATH_MAX 4096 /* # chars in a path name including nul */ ... 这是此文件的副本所在的位置以及它们定义的值: find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {} 输出: ... /usr/include/linux/limits.h:#define NAME_MAX 255 /* # chars in a file name */ ...
请参阅有关文件系统比较的 Wikipedia 页面,尤其是在最大文件名长度列中。
以下是流行文件系统中的一些文件名长度限制:
我在这里读到路径长度限制在系统标头中。文件名长度限制也在那里。在我的系统上是文件:
和 C-lang 定义:
还有更多。
我参考了其他答案,请点赞。
是的,文件名和路径名长度受以下限制:
linux/limits.h
如sfp 所述。要动态获取这些属性:
pathconf
,并fpathconf
按照Michael Aaron Safyan的建议使用tim
getconf
建议的命令,该命令在 Linux 上也可用:为了节省时间(并将其锚定到内存中):
ext2、ext3、ext4、zfs:没有路径名限制;255 字节的文件名限制。
这些是文件系统名称长度。“linux”本身也有一些。例如,来自 bits/stdio_lim.h:
无法以可移植的方式确定 Linux 上的最大路径长度。在我的系统上:
但我可以轻松创建比 4096 个字符长得多的路径。而是将
PATH_MAX
其视为下限。保证您能够创建这么长的路径,但您也可以创建更长的路径。您应该始终使用pathconf或类似这样的函数来获取有关指定项目的运行时值,正如此页面所述:
它在系统limits.h头文件中指定。
这是这些文件之一:
这是此文件的副本所在的位置以及它们定义的值:
输出: