Як зазначає @ sergiy-kolodyazhnyy, максимальна довжина імені файлу буде залежати від файлової системи та переважної більшості обмежень імені файлів довжиною до 255 байт.
Помітним упущенням його діаграми є оптичні носії. Хоча розширення UDF та Rock Ridge мають однаковий ліміт 255 символів для імен файлів файлів файлів, ISO9660 без Rock Ridge та Joliet мають набагато більш жорсткі обмеження, проти яких ви можете реально працювати, якщо ви робите щось на кшталт резервного копіювання youtube-dl
завантажень.
Імена файлів Joliet обмежені або 64 кодовими точками UTF-16, або 103 з них, якщо програма для мастерингу дисків має можливість вирватися з специфікації способами, які, здається, не завдають шкоди на практиці.
Так само, ISO 9660 Рівні 2 і 3, без розширень Rock Ridge, обмежуються назви файлів або 31 символом, або 37, якщо ви граєте швидко і вільно зі специфікацією.
ISO 9660: 1999, яка буде підтримана genisoimage але не фронтендів як K3b, має межу або 207 байт (без Rock Ridge) або 197 байт (з Rock Ridge).
(Джерело: Сторінка genisoimage
)
Що стосується максимальної довжини шляху , то це велика помилка. Для більшості файлових систем Linux не існує жодної.
Там є константа з ім'ям PATH_MAX
, але це тільки максимум для певних інтерфейсів POSIX , які ви можете працювати навколо .
Єдиними наслідковими винятками з цієї норми "без обмеження довжини шляху" є FAT32 і exFAT (32 760 символів Unicode), NTFS і ReFS (32 767 символів Unicode), UDF (1023 байти) та ISO 9660 (незрозуміло, але я бачив він вказав як 180, 207, 212 або 222 байт).
Це можна легко продемонструвати, запустивши цю невелику програму Python, а потім вивчивши отримані каталоги.
import os
for X in range(20):
os.mkdir('x' * 255)
os.chdir('x' * 255)
Мій bash
, який відображає весь шлях у запиті, матиме проблеми з цим. Однак мій zsh
, який відображає лише поточну папку в підказці, не матиме проблем і навіть має pwd
вбудований модуль, який може без проблем відображати весь шлях 5000 + байт.