respuesta es: límite suele ser de 255 caracteres (para aquellos que son demasiado perezosos para hacer clic en este enlace)
DOC_ID
11
Su respuesta debe contener al menos un resumen de la información relevante en el enlace proporcionado. No solo un enlace.
zrajm
2
@rahmanisback es correcto para los límites de nombre de archivo, mientras que los límites de ruta generalmente están definidos por el sistema operativo, no FS (excepto algunos FSes extraños como iso o ntfs), y, en Linux, son 4K
chip el
2
En realidad se trataba de ambos: D
nonchip
77
Solo señalando: bytes! = Caracteres, especialmente si usa UTF-8. Ver aquí .
Kris
87
He leído aquí que el límite de longitud de ruta está en los encabezados del sistema. El límite de longitud del nombre del archivo también está ahí. En mi sistema es archivo:
Lo siento, pero soy nuevo aquí y ni siquiera puedo comentar, excepto votar. La respuesta anterior (por sfp) debe aumentarse, ya que responde la pregunta por completo, mientras que las otras están parcialmente apagadas. Una vez más, lo siento por ir más allá de las reglas, pero no puedo estar callado cuando la mejor respuesta está en la parte inferior.
David Balažic
1
Solo señalando: bytes! = Caracteres, especialmente si usa UTF-8. Ver aquí .
Kris
1
@ DavidBalažic: Aunque es cierto, PATH_MAX bajo Linux es solo una guía, la mayoría de los sistemas de archivos subyacentes no tienen una limitación. Esto hace que sea difícil hacer referencia a rutas que sean mayores que ese tamaño. Por lo general, uso "fragmentos" de PATH_MAX como tamaño.
Rahly
23
Me refiero a otras respuestas, favor de votarlas.
¿Hay algún nombre de archivo o límite de longitud de ruta en Linux?
Sí, las longitudes de nombre de archivo y ruta están limitadas por:
Sin PATH_MAX = 4096embargo, la mayoría de los programas están limitados con rutas absolutas a . Eso puede solucionarse si su programa puede usar rutas relativas y primero cambia su directorio de trabajo.
Mikko Rantalainen
Esto se debe a que varias API POSIX como getcwdy realpath(que puede volver a implementar en el código del espacio de usuario leyendo los metadatos .y luego cambiando ..y repitiendo hasta llegar a la raíz del sistema de archivos) dependen PATH_MAX. ( Fuente )
ssokolow
6
Esas son las longitudes de nombre del sistema de archivos. "Linux" en sí también tiene algunos. Por ejemplo, de bits / stdio_lim.h:
Entonces, dado que los sistemas de archivos extX tienen un límite de nombre de archivo más bajo que el definido en el núcleo, nunca alcanzarías ese límite, a menos que también abarque nombres de ruta, ¿verdad?
Ivan
1
eso es lo que me parece a mí. También hay PATH_MAX para la ruta, que es 4096, por lo que se vería antes del tamaño de ruta "ilimitado" en las extensiones ... No estoy seguro de cómo el sistema operativo resuelve sus propias restricciones internas y las del FS, nunca tuvo mis brazos en esa profundidad pregunta interesante sin embargo.
jj33
4096 caracteres es un nombre de camino infernal. Estoy seguro de que podría plantearse con una recompilación, pero, sinceramente, / ¿por qué necesitarías nombres de ruta durante tanto tiempo? /
Avery Payne
No estoy seguro de que lo necesites o no. Lo veo más como una protección contra programas maliciosos o negligentes (pude ver fácilmente un script que se comporta mal y comienza a crear el mismo directorio de forma recursiva. En realidad, hice ese script, pero estaba redirigiendo un sitio web, no creando directorios ...)
jj33
@AveryPayne Para agregar etiquetas a los archivos para que puedan buscarse usando un simple locate.
Hubert Kario
3
No hay forma de determinar la longitud máxima de rutas en Linux de forma portátil. En mi sistema:
Pero puedo crear fácilmente caminos mucho más largos que 4096 caracteres. En cambio, ver PATH_MAXcomo un límite inferior. Se garantiza que podrá crear rutas durante tanto tiempo, pero también podría crear rutas mucho más largas.
Una manera simple y portátil de encontrar empíricamente la longitud máxima es escribir un programa que cree cadenas de directorios cada vez más largas y ver dónde falla. No sabrá exactamente por qué falla (aunque esperaría un mensaje de error sugestivo legible por humanos), pero sabrá hasta dónde puede llegar con seguridad. Recuerde verificar la longitud del directorio individual, la longitud relativa del nombre de ruta y la longitud absoluta del nombre de ruta.
tripleee
Además, por ejemplo, el os.pathconf()módulo Python tendrá algunas respuestas; si el puerto de Python es bueno, deberían ser razonables.
tripleee
2
No puede porque algunos sistemas de archivos no imponen ningún límite . Antes fallaría con un error de falta de memoria del que cualquier programa tendría dificultades para recuperarse.
Björn Lindqvist
Esta es la respuesta correcta, excepto que esto se debe al comentario de @ BjörnLindqvist. PATH_MAX es solo una guía, y el 99% de los archivos probablemente estarán dentro de ese límite.
Rahly
1
Siempre debe usar pathconf o alguna función como esta para obtener el valor de tiempo de ejecución sobre los elementos especificados, ya que esta página dice que:
Sin embargo, debe tenerse en cuenta que muchos de los límites enumerados no son invariables, y en el tiempo de ejecución, el valor del límite puede diferir de los que figuran en este encabezado, por las siguientes razones:
El límite depende de la ruta.
El límite difiere entre las máquinas de compilación y tiempo de ejecución.
Por estos motivos, una aplicación puede usar las funciones fpathconf (), pathconf () y sysconf () para determinar el valor real de un límite en tiempo de ejecución.
Se especifica en el archivo de encabezado limit.h del sistema .
Aquí está uno de estos archivos:
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 */
...
Aquí es donde se encuentran las copias de este archivo y los valores que definen:
Respuestas:
Consulte la página de Wikipedia sobre la comparación de sistemas de archivos , especialmente en la columna Longitud máxima del nombre de archivo .
Estos son algunos límites de longitud de nombre de archivo en sistemas de archivos populares:
fuente
He leído aquí que el límite de longitud de ruta está en los encabezados del sistema. El límite de longitud del nombre del archivo también está ahí. En mi sistema es archivo:
y C-lang define:
y algo más.
fuente
Me refiero a otras respuestas, favor de votarlas.
Sí, las longitudes de nombre de archivo y ruta están limitadas por:
linux/limits.h
lo establecido por sfp .Para obtener dinámicamente estas propiedades:
pathconf
yfpathconf
según lo propuesto por Michael Aaron SafyanUse el comando
getconf
propuesto por tim que también está disponible en Linux:fuente
Y en aras de ahorrar tiempo (y anclarlo en la memoria):
ext2, ext3, ext4, zfs: sin límites de nombre de ruta; Límite de nombre de archivo de 255 bytes.
fuente
PATH_MAX = 4096
embargo, la mayoría de los programas están limitados con rutas absolutas a . Eso puede solucionarse si su programa puede usar rutas relativas y primero cambia su directorio de trabajo.getcwd
yrealpath
(que puede volver a implementar en el código del espacio de usuario leyendo los metadatos.
y luego cambiando..
y repitiendo hasta llegar a la raíz del sistema de archivos) dependenPATH_MAX
. ( Fuente )Esas son las longitudes de nombre del sistema de archivos. "Linux" en sí también tiene algunos. Por ejemplo, de bits / stdio_lim.h:
fuente
locate
.No hay forma de determinar la longitud máxima de rutas en Linux de forma portátil. En mi sistema:
Pero puedo crear fácilmente caminos mucho más largos que 4096 caracteres. En cambio, ver
PATH_MAX
como un límite inferior. Se garantiza que podrá crear rutas durante tanto tiempo, pero también podría crear rutas mucho más largas.fuente
os.pathconf()
módulo Python tendrá algunas respuestas; si el puerto de Python es bueno, deberían ser razonables.Siempre debe usar pathconf o alguna función como esta para obtener el valor de tiempo de ejecución sobre los elementos especificados, ya que esta página dice que:
fuente
Se especifica en el archivo de encabezado limit.h del sistema .
Aquí está uno de estos archivos:
Aquí es donde se encuentran las copias de este archivo y los valores que definen:
Salida:
fuente