you are viewing a single comment's thread
view the rest of the comments
[–] 74 points 1 year ago* (15 children)

On Linux file systems you can use any character except NULL, and / is a reserved character.

E.g. on ext-4 "All characters and character sequences permitted, except for NULL ('\0'), '/', and the special file names "." and ".." which are reserved for indicating (respectively) current and parent directories."

  • source
  • parent
  • hideshow 15 child comments
  • [–] 55 points 1 year ago (12 children)

    I once accidentally created a file with a newline character in it... it was pretty tricky to fix from command line.

  • source
  • parent
  • hideshow 12 child comments
  • [–] 83 points 1 year ago (6 children)
  • [–] 31 points 1 year ago (3 children)
  • [–] 26 points 1 year ago (2 children)

    it was on accident, habibi, I swear 😁. I messed up some cmake code for preprocessing .txt ascii sprites into constants and accidentally created this abomination

  • source
  • parent
  • hideshow 2 child comments
  • [–] 13 points 1 year ago

    I actually did this a lot on classic Mac OS. Intentionally.

    The reason was that you could put a carriage return as the first character of a file, and it would sort above everything else by name while otherwise being invisible. You just had to copy the carriage return from a text editor and then paste it into the rename field in the Finder.

    Since OS X / macOS can still read classic Mac HFS+ volumes, you can indeed still have carriage returns in file names on modern Macs. I don't think you can create them on modern macOS, though. At least not in the Finder or with common Terminal commands.

  • source
  • parent
  • [–] 3 points 1 year ago (1 child)

    Did you not just use tab? That's the usual method of dealing with weird characters in filenames that I've found

  • source
  • parent
  • hideshow 1 child comment
  • [–] 4 points 1 year ago

    This was quite a while ago now, but I don't think my shell escaped the tab complete properly, I remember it just printing a literal newline and evaluating it as a second command. I think there was other unicode in there too, otherwise I would have just typed it out. I had to do something with null terminated output and piping it in to mv, but I can't remember what exactly.

  • source
  • parent
  • [–] 6 points 1 year ago (1 child)

    So ... is allowed, or all whitespace, or Zalgo text.

    I mean, on the one hand, I guess why be restrictive, but on the other I feel like requiring something that looks like language somehow might be a good idea to avoid edge cases and attacks.

  • source
  • parent
  • hideshow 1 child comment