Jak powiedział @ sergiy-kolodyazhnyy, maksymalna długość nazwy pliku zależy od systemu plików, a ogromna większość ogranicza długość pliku do 255 bajtów.
Znaczącym pominięciem w jego karcie są nośniki optyczne. Podczas gdy rozszerzenia UDF i Rock Ridge mają taki sam limit 255 znaków dla nazw plików, ISO9660 bez Rock Ridge i Joliet mają znacznie bardziej rygorystyczne ograniczenia, z którymi możesz się spotkać, jeśli robisz coś takiego jak tworzenie kopii zapasowych youtube-dl
pobrań.
Nazwy plików Joliet są ograniczone do 64 punktów kodowych UTF-16 lub 103 z nich, jeśli program do tworzenia płyt ma opcję oderwania się od specyfikacji w sposób, który wydaje się nie powodować szkód w praktyce.
Podobnie, poziomy ISO 9660 2 i 3, bez rozszerzeń Rock Ridge, są ograniczone do nazw plików 31 lub 37 znaków, jeśli grasz szybko i luźno ze specyfikacją.
ISO 9660: 1999, który jest obsługiwany przez genisoimage, ale nie przez nakładki takie jak K3b, ma limit 207 bajtów (bez Rock Ridge) lub 197 bajtów (z Rock Ridge).
(Źródło: The genisoimage
manpage)
Jeśli chodzi o maksymalną długość ścieżki , jest to duże nieporozumienie. Nie ma jednego dla większości systemów plików Linux.
Jest stałą o nazwie PATH_MAX
, ale to tylko maksymalne dla niektórych interfejsów API POSIX , które można pracować wokół .
Jedynymi wynikowymi wyjątkami od tej konwencji „bez ograniczeń długości ścieżki” są FAT32 i exFAT (32 760 znaków Unicode), NTFS i ReFS (32 767 znaków Unicode), UDF (1023 bajty) i ISO 9660 (niejasne, ale widziałem podano jako 180, 207, 212 lub 222 bajtów).
Można to łatwo wykazać, uruchamiając ten mały program w języku Python, a następnie eksplorując powstałe katalogi.
import os
for X in range(20):
os.mkdir('x' * 255)
os.chdir('x' * 255)
Mój bash
, który wyświetla całą ścieżkę w monicie, będzie miał z nią kłopoty. Jednak my zsh
, który wyświetla w wierszu tylko bieżący folder, nie będzie miał problemów, a nawet ma pwd
wbudowaną funkcję, która może bez problemu wyświetlać całą ścieżkę 5000+ bajtów.