linux - name - maximum file system size




限制bash中的文件名長度 (6)

  1. 文件的絕對路徑名中的字符數是否有限制?

就在這裡。

請參閱sfpLinux上的文件名長度限制問題的答案 在服務器故障

簡而言之:

#define PATH_MAX        4096    /* # chars in a path name including nul */

並為:

  1. 文件名(沒有擴展名)的字符數是否有限制?

在相同的鏈接答案中:

#define NAME_MAX         255    /* # chars in a file name */

以下問題僅適用於bash和linux:

  1. 文件的絕對路徑名中的字符數是否有限制?
  2. 文件名(沒有擴展名)的字符數是否有限制?

如果是這樣,這些限制會是什麼? 如果它們是系統特定的,我該如何訪問它們?


Single UNIX Specification提到limits.h中的NAME_MAXPATH_MAX常量,可以使用pathconf讀取。 但是,這是依賴於文件系統的,並且您不太可能達到這樣的限制。

注意:作為程序員,您不應該對這些限制進行硬編碼。 您應該使用動態分配,這樣只要底層系統允許您正在執行的操作,它就會始終有效。


僅供參考,在Docker上,文件名限制目前為242個字符


在Mac OS X 10.6.7上:

man getconf
getconf NAME_MAX /   # 255 bytes
getconf PATH_MAX /   # 1024 bytes

# check file path length with wc before using touch, mkdir, etc.
echo '/very/lllooooonnnnnggggg/file/path.txt' | wc -c

它在很大程度上取決於文件​​系統。 對於ext FS(目前在Linux上使用最多):

  • 最大文件名長度:255個字節
  • 最大路徑長度:無

擴展不是FS知道的,它包含255個字節,包含擴展名(您可以使用沒有任何擴展名的文件名)。

Here是每個FS的這些限制的更詳盡的列表。

您的文件系統也可以擴展,也可以更改您的最大長度。 例如,eCryptFS使用較低文件名的一部分來保留元數據,並將文件名限制為最大長度為143個字符。 請參閱Ubuntu eCryptFS啟動板條目。


這不依賴於bash; 它取決於操作系統。 在mac上,文件名為0xff,路徑名為0x400左右。 Ubuntu 9的文件名限制為144個字符。

我在Here找到了這個鏈接。 它告訴許多文件系統的路徑和文件名限制。





maxlength