Quels sont les caractères invalides pour un nom de fichier sous OS X?

22

J'ai du mal à trouver ces informations et les essais et erreurs me disent qu'il n'y en a peut-être pas. Quels sont les caractères non valides pour un nom de fichier sur OS X Lion (10.7)?

Rodney Foley
la source
1
Barre oblique unique? Barre oblique inverse unique? Période simple ou double?
Tous les combos slash et les singles semblent fonctionner, mais une période simple et double échouent car ils sont déjà utilisés. J'espère qu'il y a plus que ça .... :)
Rodney Foley
Vous ne pouvez pas utiliser un NUL ASCII. Réfléchissez un instant et vous comprendrez peut-être pourquoi vous-même
Donal Fellows
@Donal ASCII NUL n'est pas quelque chose que vous pouvez facilement "taper" ou faire de manière problématique par erreur.
Rodney Foley
1
Pouvez-vous nous donner un peu de contexte, Rodney? Cela aiderait beaucoup à répondre à cela si nous avons compris un peu à ce que vous essayez de faire ... autant que je sache, il y a quelques problèmes potentiels: Honnête à Dieu interdit des personnages, des personnages qui sont impossibles à entrer en chemin dans un shell de terminal et les caractères qui ne s'affichent pas correctement dans le Finder.
Shog9

Réponses:

7

HFS Plus autorise " Unicode , n'importe quel caractère, y compris NUL. Les API OS peuvent limiter certains caractères pour des raisons héritées"

tobylane
la source
3
Techincally le système de fichiers HFS + ne permet à tous les caractères Unicode (car elle représente les noms en interne comme des chaînes Pascal avec une longueur de 2 octets), mais autant que je sache , aucun des API fournies par OS X vous permet de créer / ouvrir les fichiers avec une barre oblique '/'ou NUL '\0'dans les .
Adam Rosenfield
API comme dans Carbon ou Cocoa? Je suppose que Terminal est soumis à de telles restrictions, mais qu'en est-il des scripts exécutés par d'autres programmes, tels que launchd?
tobylane
8

Quels sont les caractères invalides pour un nom de fichier sous OS X?

wiki HFS + :

Caractères autorisés dans les noms de fichiers Unicode, n'importe quel caractère, y compris NUL. Les API du système d'exploitation peuvent limiter certains caractères pour des raisons héritées


Le Finder n'autorise pas actuellement la saisie de deux-points dans les noms de fichiers, mais il autorise la saisie de barres obliques inverses. Cependant, les caractères affichés sous forme de barres obliques dans le Finder sont affichés sous forme de deux-points dans les coquilles, et vice versa. Le Finder n'autorise pas non plus les caractères de contrôle ASCII.


Bash semblait autoriser tous les personnages de contrôle sauf \000(NUL). Je l'ai testé en exécutant la sortie de:

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

ÉDITÉ

Selon Wikipedia , le seul caractère non valide est la barre oblique /, mais au niveau de la couche UNIX.


la source
2
Peut :- être est interdit sur Mac OS Classic, mais certainement pas sur Mac OS X - touch foo:barfonctionne parfaitement bien.
Adam Rosenfield
1
La réponse a été mise à jour. Vous êtes invités à supprimer votre downvote.
5
@Adam: :est valide dans la «couche unix», mais il est traduit vers / depuis /dans les «couches Mac» (c'est-à-dire le Finder, la plupart des boîtes de dialogue liées aux fichiers, etc.): le deux-points est utilisé comme séparateur dans les «chemins HFS »Et la barre oblique est utilisée comme séparateur dans les« chemins POSIX », il y a donc une traduction bidirectionnelle selon la« couche »avec laquelle vous travaillez.
Chris Johnsen
2
Donc, pas de barre oblique ( /) ni de deux-points ( :) pour être sûr?
Nicolas Miari
2
@NicolasMiari Oui. Finder.app ne vous permettra pas d'entrer deux points et ne fonctionnera pas correctement avec les noms de fichiers qui le contiennent. La couche UNIX ne vous permettra pas de travailler avec des fichiers contenant une barre oblique (ou plutôt, elle la traduit en deux points). Et puis il y a d'autres applications (comme Microsoft Word) qui s'étouffent sur les deux. Par exemple, si vous enregistrez un document dans TextEdit.app sous le nom de fichier foo/bar.docx(qui fonctionne), Microsoft Word ne pourra pas l'ouvrir.
Konrad Rudolph