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)?
-
1Single forward slash ? Single backslash ? Single or double period ?– koanAug 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.... :)– Rodney FoleyAug 21, 2011 at 19:43
-
You can't use an ASCII NUL. Think a while and you might spot why yourself…– Donal FellowsAug 21, 2011 at 19:45
-
@Donal ASCII NUL is not something you can easily just "type" or do problematically by mistake.– Rodney FoleyAug 21, 2011 at 19:48
-
1Can 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.– Shog9Aug 21, 2011 at 20:03
3 Answers
HFS Plus allows "Unicode, any character, including NUL. OS APIs may limit some characters for legacy reasons"
-
9Techincally 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?– tobylaneAug 21, 2011 at 20:58
What are invalid characters for a file name under OS X?
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
-
1Could you test
/
(POSIX path separator) and:
(HFS path separator) with bash?– CœurFeb 5, 2020 at 7:21 -
1Confirmed 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.– TomFeb 2 at 7:35
EDITED
According to Wikipedia, the only invalid character is the forward-slash /
, but at the UNIX layer.
-
5Maybe
:
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 -
3Answer has been updated. You're welcome to remove your downvote.– user3463Aug 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
-
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