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.”
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
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.
I don’t conduct interviews very often, but when I do, one of my questions is always about interacting with files that have special characters in the filename.
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.
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.
I created a file with backspace in name, it was hard to understand why filename doesn’t match
Arrest this person
This is absolutely haram
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
I once made a script to delete .o, .lib, and .so files from my huge dev folder to free up space on my home partition.
It did not go as planned.
O no, o no no no
This is why you shouldn’t parse
ls
output btw. Usefind
andread
insteadI 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 don’t conduct interviews very often, but when I do, one of my questions is always about interacting with files that have special characters in the filename.
Did you not just use tab? That’s the usual method of dealing with weird characters in filenames that I’ve found
Too bad when there’s multiple files starting with and consisting mostly of e.g. kanji (when on a Latin keyboard).
With the right shell, you can just press tab multiple times to cycle through the possible completions.
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.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.
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.
You can have new lines in your file names. YSAP has a good video/playlist about how to deal with these and many more.