GNU/Linux >> Tutoriales Linux >  >> Linux

Nombres de archivo de Linux/Windows/Unix/...:¿Qué caracteres están permitidos? ¿Cuáles no tienen escapatoria?

Solución 1:

Los únicos caracteres no permitidos en un nombre de archivo en *nix son NUL y / . En Windows, solo NUL , : y \ realmente no están permitidos, pero muchas aplicaciones lo restringen aún más, lo que también evita que ? , * , + y % .

En ningún momento los caracteres en un nombre de archivo necesitan escaparse excepto cuando sea necesario para que el shell no lo interprete.

Solución 2:

Hay una discusión sobre los caracteres de nombre de archivo en el artículo de Wikipedia sobre Nombres de archivo.

Puede encontrar este ensayo informativo:Corrección de nombres de archivo Unix/Linux/POSIX.

Este artículo compara OS X y Windows XP:X vs. XP:Caracteres prohibidos en los nombres de archivo (PDF, ver págs. 64-66 aprox.).

Cosas que no deberían estar en los nombres de archivos por $1,000 Alex

No sé qué caracteres deben ser un -escapado, pero en Linux, probablemente no sea una buena idea escapar los caracteres que pueden tener un significado especial como "n" (nueva línea), "t" (tabulador) y otros, pero eso generalmente no es un problema en las operaciones de archivos. Quizás te refieres a "escapado" en lugar de "sin escape". Los más comunes son los que el shell interpretará, como espacio, ">", "<", etc. Vea algunos de los artículos que vinculé para una discusión sobre ellos.

Solución 3:

Si crea un archivo en Windows con Explorer usando uno de los siguientes caracteres, se quejará de que los caracteres no están permitidos:

\ / : * ? " < > |

Una buena referencia está aquí:

Nombrar archivos, rutas y espacios de nombres
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

Microsoft afirma además:

"... en plataformas de escritorio basadas en Windows, los caracteres de ruta no válidos pueden incluir caracteres ASCII/Unicode del 1 al 31, así como comillas ("), menor que (<), mayor que (>), tubería (|), retroceso (\b), nulo (\0) y tabulador (\t)."

http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx

Solución 4:

En Linux y otros sistemas compatibles con POSIX, "/" está reservado como separador de directorios y "\0" (el carácter NULL) designa el final de la cadena. Todo lo demás está permitido.


Linux
  1. ¿Qué caracteres están prohibidos en los nombres de directorio de Windows y Linux?

  2. Caracteres permitidos en nombres de variables de entorno de Linux

  3. ¿Por qué hay tantos /dev/tty en Linux?

  4. ¿Deberían vivir los sitios web en /var/ o /usr/ según el uso recomendado?

  5. En mi archivo /etc/hosts/ en Linux/OSX, ¿cómo hago un subdominio comodín?

Cómo convertir un archivo de Windows a un archivo UNIX

Comando AWK en Linux/Unix

/dev/null en Linux

Archivos /proc/cpuinfo y /proc/meminfo en Linux

¿Cómo obtengo la ruta de un proceso en Unix/Linux?

unix:///var/run/supervisor.sock no hay tal archivo