37

I am having trouble finding this information, and trial and error is telling me that there may not be any. What are invalid characters for a file name on OS X Lion (10.7)?

11
  • 1
    Single forward slash ? Single backslash ? Single or double period ?
    – koan
    Aug 21, 2011 at 19:35
  • All the slash combo's and singles seem to work, but a single and double period do fail because they are already in use. I hope there is more than that.... :) Aug 21, 2011 at 19:43
  • You can't use an ASCII NUL. Think a while and you might spot why yourself… Aug 21, 2011 at 19:45
  • @Donal ASCII NUL is not something you can easily just "type" or do problematically by mistake. Aug 21, 2011 at 19:48
  • 1
    Can you give us some context, Rodney? It would help a lot in answering this if we understood a little bit about what you're trying to do... AFAIK, there are a few potential issues: honest-to-god forbidden characters, characters that are impossible to enter as a path in a terminal shell, and characters that won't display properly in Finder.
    – Shog9
    Aug 21, 2011 at 20:03

3 Answers 3

12

HFS Plus allows "Unicode, any character, including NUL. OS APIs may limit some characters for legacy reasons"

2
  • 12
    Techincally the HFS+ file system does allows all Unicode characters (since it represents names internally as Pascal strings with a 2-byte length), but AFAIK none of the APIs provided by OS X allow you create/open files with a slash '/' or NUL '\0' in them. Aug 21, 2011 at 20:54
  • APIs as in Carbon or Cocoa? I assume Terminal is under such restrictions, but what about scripts run by other programs, such as launchd?
    – tobylane
    Aug 21, 2011 at 20:58
14

What are invalid characters for a file name under OS X?

wiki HFS+:

Allowed characters in filenames Unicode, any character, including NUL. OS APIs may limit some characters for legacy reasons


Finder doesn't currently allow entering colons in in file names, but it does allow entering backslashes. However the characters shown as slashes in Finder are shown as colons in shells, and vice versa. Finder doesn't allow any ASCII control characters either.


Bash seemed to allow all control characters except \000 (NUL). I tested it by running the output from:

for i in {1..31} 127 0; do echo touch \\$(bc <<< "obase=8;$i"); done
2
  • 1
    Could you test / (POSIX path separator) and : (HFS path separator) with bash?
    – Cœur
    Feb 5, 2020 at 7:21
  • 1
    Confirmed by experiment that every glyph on a standard QWERTY keyboard is permitted by MacOS Finder except colon. That's not quite what OP asked, but might be relevant to others.
    – Tom
    Feb 2, 2023 at 7:35
5

EDITED

According to Wikipedia, the only invalid character is the forward-slash /, but at the UNIX layer.

5
  • 5
    Maybe : is prohibited on Mac OS Classic, but certainly not on Mac OS X—touch foo:bar works perfectly fine. Aug 21, 2011 at 20:56
  • 3
    Answer has been updated. You're welcome to remove your downvote.
    – user3463
    Aug 21, 2011 at 21:38
  • 8
    @Adam: : is valid in the “unix layer”, but it is translated to/from / in the “Mac layers” (i.e. Finder, most file-related dialogs, etc.): the colon is used as the separator in “HFS paths” and the slash is used as the separator in “POSIX paths” so there is a two-way translation depending on which “layer” you are working with. Aug 22, 2011 at 4:33
  • 2
    So, no forward slash (/) or colons (:) to be safe? Feb 16, 2016 at 12:07
  • 5
    @NicolasMiari Yes. Finder.app won’t allow you to enter a colon, and won’t work properly with filenames that contain it. The UNIX layer won’t allow you to work with files containing a slash (or rather; it translates it to a colon). And then there are other applications (such as Microsoft Word) who choke on either. For instance, if you save a document in TextEdit.app under the filename foo/bar.docx (which works), Microsoft Word will be unable to open it. May 20, 2016 at 14:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .