AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 9546
Accepted
readonly
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 8 个回答
  • 243093 Views

8 个回答

  • Voted
  1. 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
    
    • 166
  2. 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 */
    

    还有更多。

    • 109
  3. 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
      
    • 29
  4. Ivan
    2009-05-19T09:43:27+08:002009-05-19T09:43:27+08:00

    为了节省时间(并将其锚定到内存中):

    ext2、ext3、ext4、zfs:没有路径名限制;255 字节的文件名限制。

    • 22
  5. jj33
    2009-05-19T10:15:49+08:002009-05-19T10:15:49+08:00

    这些是文件系统名称长度。“linux”本身也有一些。例如,来自 bits/stdio_lim.h:

    # define FILENAME_MAX 4096
    
    • 7
  6. 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其视为下限。保证您能够创建这么长的路径,但您也可以创建更长的路径。

    • 3
  7. andy
    2015-01-16T18:17:46+08:002015-01-16T18:17:46+08:00

    您应该始终使用pathconf或类似这样的函数来获取有关指定项目的运行时值,正如此页面所述:

    然而,应该注意的是,许多列出的限制不是一成不变的,并且在运行时,限制的值可能与此标头中给出的值不同,原因如下:

    • 限制取决于路径名。

    • 编译和运行时机器之间的限制不同。

    由于这些原因,应用程序可以使用 fpathconf()、pathconf() 和 sysconf() 函数来确定运行时限制的实际值。

    • 2
  8. 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 */
    ...
    
    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve