linux实例之文件名的最大长度

叶sir学编程 2024-06-05 22:14:55

在linux系统中,对文件名称、目录名称和绝对路径的长度都做了限制,且限制条件包括且不限于文件系统类型,系统内核等。不考外在因素外,linux系统默认是将文件名称和目录名称的长度限制在了255个字节,而绝对路径的长度限制在了4096个字节;这两个限制值被定义在了系统自带的头文件limits.h中,如图1,路径为/usr/include/linux/limits.h,不同的linux系统有可能会有差异。

NAME_MAX宏定义表示的文件名或目录名的最大长度;

PATH_MAX宏定义表示的是绝对路径的最大长度;

图1

实例之文件名的最大长度

编写一个简单的shell脚本用于测试验证实际创建文件时,限制最大的长度是多少。如图2,在shell脚本里使用随机数来作为文件名,然后使用touch命令创建文件,如果文件名太长,则会创建失败,反之,则会创建成功。

图2

实例之目录名的最大长度

同样的,编写一个简单的shell脚本,然后使用随机数作为目录名以及使用mkdir命令创建目录,判断创建结果,如图3,报错时,会显示File name too long信息。

图3

实例之绝对路径的长度

文件的绝对路径也可以理解为目录下可以创建多少级的子目录,不过这个绝对路径在linux系统中,可以目录名称的长度有关,目录名称长,则创建的子目录级数就少,反之就多。同样的创建一个shell脚本验证测试下,如图4,分别创建目录名为1字节和2个字节长度的时候,得出可以创建多少级的子目录。

在linux系统中,由于目录和子目录的路径是由/分割开的,因此计算绝对路径的长度时,每个目录需要多一个字节(分割符/占一个字节),因此当创建目录名长度为1和2的时候,子目录的级数并不是倍数关系。

图4

0 阅读:18

叶sir学编程

简介:感谢大家的关注