¿Qué caracteres están permitidos y cuáles de ellos deben escaparse en la línea de comandos en diferentes sistemas operativos?
¿Qué caracteres están permitidos y cuáles de ellos deben escaparse en la línea de comandos en diferentes sistemas operativos?
Respuestas:
Hay una discusión sobre los caracteres del nombre de archivo en el artículo de Wikipedia sobre nombres de archivos .
Puede encontrar este ensayo informativo: Arreglando 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 archivo por $ 1,000 Alex
No sé qué caracteres deben estar sin escape, pero en Linux, probablemente no sea una buena idea escapar de los caracteres que pueden tener un significado especial como "n" (nueva línea), "t" (tabulación) y otros, pero eso generalmente no es un problema en las operaciones de archivos. Quizás te refieres a "escapado" en lugar de "no escapado". Los más comunes son los que el intérprete interpretará, como el espacio, ">", "<", etc. Vea algunos de los artículos que vinculé para una discusión de ellos.
Los únicos caracteres no permitidos en un nombre de archivo en * nix son NUL
y /
. En Windows, solamente NUL
, :
y \
están verdaderamente no permitidos, pero muchas de las aplicaciones que restringen aún más, impidiendo también ?
, *
, +
, y %
.
En ningún momento es necesario escapar de los caracteres de un nombre de archivo, excepto cuando sea necesario para que el intérprete no los interprete.
Si crea un archivo en Windows con Explorer utilizando 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 (>), canalización (|), retroceso (\ b), nulo (\ 0) y pestaña (\ t) ".
http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx
\ / : * ? " < > |
todos ellos y crearlos con mkdir en mi sistema GNU / Linux. Puede usar mkdir '?'
para crear el ?
directorio también. He usado el ramdisk y el sistema de archivos XFS para probar eso.
En Linux y otros sistemas POSIX compatibles, "/" está reservado ya que es el separador de directorio y "\ 0" (el carácter NULO) designa el final de la cadena. Todo lo demás está permitido.