what is even more funny about this is that the name of that directory used to be locale-dependent, so in sweden it was just called "Program", completely nullifying that idea.
C:\PROGRA~1
me coming back to cmd after spending a month in command.com:
It's only localised in the file explorer. The actual folder name is always Program Files.
Only since vista, it used to be localized.
Really? That is absolute insanity
No this is just clever
I've recently learned that in Linux, you can use emois in filenames. I died a little lot inside when I learned that.
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."
This is absolutely haram
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.
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.
In filenames? AMATEURS! Use obscure Unicode in your passphrases for maximum security. Ctrl-Shift-U, enter arbitrary code point, bam! 🦊
Works even better with a Compose key and a nice, chonky .XCompose file to throw some gr∑∑k letters around, for instance, like some confused script kiddie. :)
On topic: There are multiple variants of spaces in Unicode. You're welcome, and now go and create something utterly deranged with that information.
I already deal far too much with trying to handle dumb fucking typos in employee data, and trying to turn human names into valid email addresses.
The first time I encounter something like this there will be a body. It will not be found.
Some grSSk letters?
unix filenames are just string of bytes, the operating system does not interpret it in anyway. this is a much saner approach compared to Windows where language settings can change file system behavior.
I'm just gonna pretend I didn't hear that.
ChatGPT is taking notes
10 seconds of googling indicates this is true for Windows and Mac as well. I haven't looked specifically, but I'd be a little surprised if it wasn't true for Android and iOS as well.
But really, why would they add rules to prevent people from using certain unicode codepoints in filenames? Should they disallow Klingon as well? Kanji? Of course not. Emojis are codepoints just like U+0061 is.
Of course there are good reasons to disallow things like newlines and forward slashes in Linux filenames, but what specifically would even be the argument for preventing emojis?
Lol, I think that's how I learned it was possible, too. yt-dlp uses the title as the filename, and all of the emojis came along with it. Was trying to rename them from terminal, but couldn't do much when half the filenames started with the fire emoji lol.
What about an emoji only wifi password?
I think that may be possible for every filesystem supporting UTF-8 encoding.
I\ don\'t\ know\ what\ you\ mean,\ I\'ve\ never\ encountered\ any\ annoyances.
'I don\'t know what you mean, I\'ve never encountered any annoyances.'
Single quotes don't allow any escaping in shell, you need
'I don'\''t know what you mean, I'\''ve never encountered any annoyances'
Or, in Zsh with setopt rcquotes:
'I don''t know what you mean, I''ve never encountered any annoyances'
Oh right, good catch. That's me shell scripting while in a meeting. 🫠
Good use of a meeting to be fair
it works in fish
Oh\ come\ on,\ it\'s\ not\ that\ bad
Some shells enclose those types of files within inverted commas. Such that:
> ls
file\ name.md
is instead
> ls
'file name.md'
(I use fish)
Yes, I am a weird english.
On its own, the backtick is primarily used in computing, and so doesn't have an old-timey-English name, nor does the Jargon File mention a Commonwealth Hackish name for it. While there are a variety of other names, I don't think any of them are specific to the UK
When used with a letter, it marks a grave accent; this was its original purpose on a typewriter
Floating commas
Ik heb nog nooit iemand een ' een vliegende komma horen noemen, wordt dat in bepaalde delen van Nederland meer gezegd?
I tried to parse the first one but got all confused because there's no closing single quote.
Are you typing the whole filename by hand? Tab expansion exists, you know?
Now I use lowercase and underscores everywhere.
This is what I need, an explicit reason that makes one choice better than another. If hyphens make for a smoother experience, then I'll reconsider my default behavior.
Thanks for pointing out this benefit.
They suck hard. I use the renpy engine and there you reference file names directly but always lower case and spaces and hyphens turn to underscores. That can cause issues, so I just do underscores in my file names. Don't give damn about the web.
Yeah I prefer underscores too but kebab case is definitely better for web and general ergonomics. Dash doesnt require a shift hold! Tho I still mix these depeding on tool or existing idioms. One thing for sure is that spaces and capital letters are stupid and we should do less of them.
This is the best for tab completion, altho I prefer hyphens visually
the struggle between spaces in filenames look cute and oh fuck what's the code to reference a space in a filename in terminal?
Or you can also put a \ in front of the space
not sure why the default behavior is this:
file\ name\ with\ a\ bunch\ of\ spaces
instead of this:
"file name with a bunch of spaces"
but you can just press " before pressing tab to auto-complete, and it will use the 2nd form
Because quoting requires token expansion (e.g. ~ to /home/you). Escaping gives you a much shorter path in that case.
That said I'm with you, full quoted paths read better to me.
You can use variables in " like so: cd "$HOME/Desktop".
Maybe this helps?
I mean, at least in Bash tools like ls do use quotes by default:
$ ls
filename_without_space 'filename with space'
But yeah, tab expansion uses backslashes, sadly.
i think i am old. i grew up using DOS, and really hated spaces in filenames and folders because they appreared truncated at the first space with a tilde and index of that file/folder representation.
ex: C:\folder name is bad\ == C:\folder~1
i hated that so much that when i got to windows 3.1 i refrained from using spaces (some command line was still necessary in w3.1)
i have jept that habit through the years, so when i moved from windoes to linux, my natural instincts of snake_case_folder_names made it so i didnt have to change : D
That's not even DOS I think. As far as I know Win 95 came up with this monstrosity in an attempt to circumvent the 8.3 character limitations present in older versions of DOS.
One of the fun things about modern Windows is that ~1 shit still appears every once in a rare while. Gotta love just stacking more and more shit on top of ancient systems in the name of backwards compatibility!
Yea, Win 3.1 didn't support long names - that came with Win95. Win 3.1 was a shell on DOS.
But I understand - it all blends together after um... 40 years (ouch!).
i think i am old
" is your friend
Windows is stupid as shit, trying to shift+right click > open Powershell in a path containing a space results in it throwing an error, and you have to paste the path in yourself anyway
They're annoying to deal with when interactively using command-line shells, especially so when pasting unquoted and unescaped file paths, doubly especially so with Bash where parameter expansion makes no goddamn sense if you know at least one other programming language
Example of how parameter expansion matters?
Generally if you are pasting file paths there is a better way to do that. Use find with exec, or xargs, or a for loop. Or, get the list in Vim and escape (quote) every line at once. Unless you have double quotes in the filename too (which is actually a crazy thing) it shouldn’t be a big deal.
Expansion matters because using parameters without quotes automatically splits words, and IIRC a quoted array parameter can still be split into its members — as opposed to Zsh, where word splitting doesn't happen unprompted and quoted array parameters are flattened into a single string.
Generally if I want to run $HOME/random executable with spaces.exe through Wine in a terminal I copy the path in Dolphin (CTRL+SHIFT+C, or CTRL+ALT+C idr) and paste it, within quotes if needed (the four extra key inputs are the annoying part).
I find that much faster than manually typing find "$HOME" -name "random executable with spaces.exe" -type x -exec wine "{}" \;, or opening an editor to insert backslashes.
Why on earth not just type wine ~/random and then hit tab to autocomplete? Or you could do
wine `echo random*`
AFAIK, if $file is a filename with spaces, then some_util ${file} will not split the filename.
Now I'm imagining a shell that looks iteratively through arguments to find where quotes would make total sense
$ ls
my victims.ods
$ wipe -f my victims.ods --thorough
So the shell would go like
wipe → command name found, ok-f → no file in the current directory starts with that, skipmy → matches a file, keep in memory...my victims.ods → full match, but missing quotes!Filename "my victims.ods" found without quotes. Choose:
[a]dd quotes this time
[A]lways add quotes (dangerous)
[n]o quotes today please
[N]ever offer adding quotes again
[t]ell me what could possibly go wrong when I choose to always add quotes
[P]unch the person who proposed this feature
For interactive use, tab-completion essentially makes this a non-issue, because shells add escaping in the appropriate places.
For scripting, where spaces are harder to deal with, unfortunately there's just not much you can do; your two options are basically to learn all of your particular shell's patterns for dealing with whitespace in filenames, or only write scripts in something other than a POSIX shell.
Don't try svelte kit. This is pseudocode but it's valid. The only symbol show here that is not real is the / that I've placed at the end of folder to show that they are folders. There are other special cases
routes/
+page.ts
(admin)/
+page.ts
[user=uuid]/
[[community]]/
+page.ts
posts/
[...postIds@]/
+page.ts
Have you noticed issues that you think would arrise at scale, etc for an enterprise project?
I'm using it for a small/medium sized project and it's great and has not got in the way once. Wondering how you feel, since I don't have experience with much enterprise code.
tools which cant handle being installed/run on directories with spaces are unacceptably common
I vaguely remember zsh in Manjaro (by default) having a tab completion that automatically added the slashes.
Never set it up myself though.
But I really hate having to worry about quoting my file variables in scripts.
So much, that after a certain complexity, I just give up the script and make the thing in C++.
Oh, and if I make a script that doesn't handle file names properly (because it's not required in that specific use case), I make sure to delete it after use, to prevent mistaken use later, which would otherwise cause more headache than just having to rewrite a script.
You can just start the path with a quote and it will auto complete with spaces. I spend a lot of time correcting files with spaces replaced now. The spaces are better. I think music is the most annoying, since I like to use tools like EasyTag to extract metadata from filenames.
So please stop.naming_files.like_this.its_stupid
You can just start the path with a quote and it will auto complete with spaces.
Oh, you're right. I just tried it out and it worked the same way.
I wonder what gave me the misconception the it doesn't by default.
“_” to the rescue
I still use spaces
i y'all just started using fish shell, you'd have proper shell completions and argument splitting that doesn't care about spaces in file names
SameHereBrother.
capital letters.
I love emoji filenames
@programming.dev
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
go to feed...
@programming.dev
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
go to feed...
Someone make one of those "statements made by the utterly deranged" memes about it, please and thank you.
save