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.”
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.
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.
Or use a hair space so it looks almost the same. Or … but you’ve added the right-to-left unicode character. I’m guessing there’s something that looks a lot like a period, too.
If ext4 doesn’t include restrictions terminals probably should.
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.”
I once accidentally created a file with a newline character in it… it was pretty tricky to fix from command line.
This is why you shouldn’t parse
lsoutput btw. UsefindandreadinsteadI 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.
I created a file with backspace in name, it was hard to understand why filename doesn’t match
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.
You can have new lines in your file names. YSAP has a good video/playlist about how to deal with these and many more.
could you have
..? I assume most terminals would just spell out.\x200b.?Or use a hair space so it looks almost the same. Or … but you’ve added the right-to-left unicode character. I’m guessing there’s something that looks a lot like a period, too.
If ext4 doesn’t include restrictions terminals probably should.