¿Cuáles son los caracteres no válidos para un nombre de archivo en OS X?

22

Tengo problemas para encontrar esta información, y el método de prueba y error me dice que puede que no haya ninguna. ¿Cuáles son los caracteres no válidos para un nombre de archivo en OS X Lion (10.7)?

Rodney Foley
fuente
1
¿Barra diagonal simple? ¿Barra invertida simple? ¿Período simple o doble?
Todos los combo y singles de barra parecen funcionar, pero un período simple y doble fallan porque ya están en uso. Espero que haya más que eso ... :)
Rodney Foley
No puedes usar un ASCII NUL. Piensa un poco y podrías descubrir por qué tú mismo ...
Donal Fellows
@Donal ASCII NUL no es algo que pueda simplemente "escribir" o hacer problemáticamente por error.
Rodney Foley
1
¿Puedes darnos un poco de contexto, Rodney? Sería de gran ayuda responder esto si entendiéramos un poco sobre lo que estás tratando de hacer ... AFAIK, hay algunos problemas potenciales: personajes prohibidos honestamente , personajes que son imposibles de ingresar como ruta en un terminal shell y caracteres que no se mostrarán correctamente en Finder.
Shog9

Respuestas:

7

HFS Plus permite " Unicode , cualquier carácter, incluido NUL. Las API del sistema operativo pueden limitar algunos caracteres por motivos heredados"

tobylane
fuente
3
Técnicamente, el sistema de archivos HFS + permite todos los caracteres Unicode (ya que representa los nombres internamente como cadenas Pascal con una longitud de 2 bytes), pero AFAIK ninguna de las API proporcionadas por OS X le permite crear / abrir archivos con una barra diagonal '/'o NUL '\0'en ellos .
Adam Rosenfield
¿APIs como en carbono o cacao? Supongo que Terminal está bajo tales restricciones, pero ¿qué pasa con los scripts ejecutados por otros programas, como launchd?
tobylane
8

¿Cuáles son los caracteres no válidos para un nombre de archivo en OS X?

wiki HFS + :

Caracteres permitidos en nombres de archivo Unicode, cualquier carácter, incluido NUL. Las API del sistema operativo pueden limitar algunos caracteres por motivos heredados


Finder actualmente no permite ingresar dos puntos en los nombres de archivo, pero sí permite ingresar barras diagonales inversas. Sin embargo, los caracteres que se muestran como barras en Finder se muestran como dos puntos en los depósitos y viceversa. Finder tampoco permite caracteres de control ASCII.


Bash parecía permitir todos los caracteres de control excepto \000(NUL). Lo probé ejecutando la salida de:

for i in {1..31} 127 0; do echo touch \\$(bc <<< "obase=8;$i"); done
Lri
fuente
2

EDITADO

Según Wikipedia , el único carácter no válido es la barra diagonal /, pero en la capa UNIX.


fuente
2
Tal vez :esté prohibido en Mac OS Classic, pero ciertamente no en Mac OS X, touch foo:barfunciona perfectamente bien.
Adam Rosenfield
1
La respuesta ha sido actualizada. Le invitamos a eliminar su voto negativo.
55
@Adam: :es válido en la "capa de Unix", pero se traduce a / desde /en las "capas de Mac" (es decir, Finder, la mayoría de los cuadros de diálogo relacionados con archivos, etc.): los dos puntos se usan como separador en las "rutas HFS "Y la barra oblicua se utiliza como separador en las" rutas POSIX ", por lo que hay una traducción bidireccional según la" capa "con la que esté trabajando.
Chris Johnsen
2
Entonces, ¿no hay barra diagonal ( /) o dos puntos ( :) para estar a salvo?
Nicolas Miari
2
@NicolasMiari Sí. Finder.app no ​​le permitirá ingresar dos puntos, y no funcionará correctamente con los nombres de archivo que lo contienen. La capa UNIX no le permitirá trabajar con archivos que contengan una barra oblicua (o mejor dicho, la traduce a dos puntos). Y luego hay otras aplicaciones (como Microsoft Word) que se ahogan con cualquiera. Por ejemplo, si guarda un documento en TextEdit.app con el nombre del archivo foo/bar.docx(que funciona), Microsoft Word no podrá abrirlo.
Konrad Rudolph