Antworten:
Informationen zum Vergleich von Dateisystemen finden Sie auf der Wikipedia-Seite , insbesondere in der Spalte Maximale Dateinamenlänge .
Hier sind einige Dateinamen-Längenbeschränkungen in gängigen Dateisystemen:
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
Ich habe hier gelesen , dass die Pfadlängenbeschränkung in den Systemüberschriften ist. Die maximale Länge von Dateinamen ist ebenfalls festgelegt. Auf meinem System ist es Datei:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
und C-lang definiert:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
und noch einiges mehr.
Ich beziehe mich auf andere Antworten, bitte stimmen Sie ihnen zu.
Gibt es unter Linux Beschränkungen für Dateinamen oder Pfadlängen?
Ja, die Länge von Dateinamen und Pfadnamen ist begrenzt durch:
linux/limits.h
wie von sfp angegeben .So rufen Sie diese Eigenschaften dynamisch ab:
pathconf
undfpathconf
wie von Michael Aaron Safyan vorgeschlagenVerwenden Sie den getconf
von tim vorgeschlagenen Befehl , der auch unter Linux verfügbar ist:
$ getconf NAME_MAX /mnt/sda2/
255
$ getconf PATH_MAX /mnt/sda3/
4096
Und um Zeit zu sparen (und im Gedächtnis zu verankern):
ext2, ext3, ext4, zfs: keine Pfadnamenbeschränkungen; Dateinamenbegrenzung von 255 Byte.
PATH_MAX = 4096
. Dies kann umgangen werden, wenn Ihr Programm relative Pfade verwenden kann und Sie zuerst Ihr Arbeitsverzeichnis ändern.
Das sind Dateisystemnamenslängen. "linux" selbst hat auch welche. Zum Beispiel aus bits / stdio_lim.h:
# define FILENAME_MAX 4096
locate
.
Es gibt keine Möglichkeit , die maximale Länge von Pfaden unter Linux portabel zu bestimmen. Auf meinem System:
$ getconf PATH_MAX /
4096
$ getconf _POSIX_PATH_MAX /
4096
Ich kann aber problemlos Pfade mit mehr als 4096 Zeichen erstellen. Stattdessen PATH_MAX
als Untergrenze sehen. Sie können garantiert so lange Pfade erstellen, aber Sie können auch viel längere Pfade erstellen.
os.pathconf()
Modul einige Antworten haben; Wenn der Python-Port gut ist, sollten sie vernünftig sein.
Sie sollten immer pathconf oder eine Funktion wie diese verwenden, um den Laufzeitwert für die angegebenen Elemente abzurufen , da auf dieser Seite Folgendes angegeben ist :
Es ist jedoch zu beachten, dass viele der aufgelisteten Grenzwerte nicht invariant sind und dass der Wert des Grenzwerts zur Laufzeit aus den folgenden Gründen von dem in diesem Header angegebenen Wert abweichen kann:
Das Limit ist pfadnamenabhängig.
Das Limit unterscheidet sich zwischen den Compile- und Runtime-Maschinen.
Aus diesen Gründen kann eine Anwendung die Funktionen fpathconf (), pathconf () und sysconf () verwenden, um den tatsächlichen Wert eines Grenzwerts zur Laufzeit zu ermitteln.
Es ist in der Header-Datei system limits.h angegeben .
Hier ist eine dieser Dateien:
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 */
...
Hier befinden sich Kopien dieser Datei und die von ihnen definierten Werte:
find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}
Ausgabe:
...
/usr/include/linux/limits.h:#define NAME_MAX 255 /* # chars in a file name */
...