This is one case where I think Windows is appropriately designed for its target audience.
I don’t really see the benefit of allowing users to create files with the same name in the same directory, yeah, yeah I know that case sensitivity means that it isn’t same name, but imagine talking to a user, guiding them to open the file /tmp/doc/File and they open /tmp/doc/file instead
The reason, I suspect, is fundamentally because there’s no relationship between the uppercase and lowercase characters unless someone goes out of their way to create it. That requires that the filesystem contain knowledge of the alphabet, which might work if all you wanted was to handle ASCII in American English, but isn’t good for a system which needs to support the whole world.
In fact, the UNIX filesystem isn’t ASCII. It’s also not unicode. UNIX uses arbitrary byte strings, with special significance given to a very small number of bytes (just ‘/’ and ‘\0’, I think). That means people are free to label files in whatever way they like, and their terminals or other applications are free to render them in whatever way seems appropriate, without the filesystem having to understand unicode.
Adding case insensitivity would therefore actually be significant and unnecessary complexity to add to the filesystem drivers, and we’d probably take a big step backwards in support for other languages
Oh, I realize why it is, I just don’t see it as an advantage, the whole argument is just a technical one, not a usabillity one.
You’re basically arguing that a system shouldn’t support user friendly things because that would add significant burden to the programmer.
The quintessential linux philosophy. Well done! I mean, what is language? Why have named code variables? This is just a random array of bytes!
No, I’m arguing that the extra complexity is something to avoid because it creates new attack surfaces, new opportunities for bugs, and is very unlikely to accurately deal with all of the edge cases.
Especially when you consider that the behaviour we have was established way before there even was a unicode standard which could have been applied, and when the alternative you want isn’t unambiguously better than what it does now.
“What is language” is a far more insightful question than you clearly intended, because our collective best answer to that question right now is the unicode standard, and even that’s not perfect. Making the very core of the filesystem have to deal with that is a can of worms which a competent engineer wouldn’t open without very good reason, and at best I’m seeing a weak and subjective reason here.
Well you’re just asking an economic question, are the costs worth the benefits?
I’d argue that linux will never be a good or user friendly operating system without case insensitive filenames.
That isn’t an opinion but could be verified through scientific study of how confused people act. You don’t even need computers, just ask someone to get the “something SomeTHing” from a labeled box in a cupboard. Presumably science would show that case insensitive naming of things is always less confusing when humans actually use the system.
The truth is that programmers enjoy writing code far more than reading code. And especially to open source developers “usability” is a dirty word. It’s not about the value of a thing, it’s about the beauty of how it is done.
pov: you encode filenames in utf-1, just happens to contain one of those bytes
Idiot user! ;)
In case it’s not obvious, I agree that I don’t see much of a point in case sensitivity in an OS outside of simply providing additional options for various uses, it absolutely would be confusing for end users having to interact with it in many ways.
This isn’t “Windows design”… this is just inherited stone age bullshit from the DOS days when the filesystem was FAT16 and all file names were uppercase 8.3.
NTFS is case sensitive in its underlying design, but was made case insensitive by default, yet case preserving, for reasons of backwards compatibility.
If Microsoft has to design something from scratch, without the need for backwards compatibility, they go for case sensitive themselves. For example: Azure Blob Storage has case sensitive file names.
If you rename a file only changing the casing it doesn’t update properly, you need to rename it to something else and back.
This is so userfriendly I have been stumped by it multiple times.On the other hand in using Linux I have had a number of problems with the casing of files: The number is 0
If you rename a file only changing the casing it doesn’t update properly, you need to rename it to something else and back. This is so userfriendly I have been stumped by it multiple times.
To my great surprise, this has been fixed. I don’t know when, but I tried it on my Windows 10 VM and it just worked. Only took them 20 years or so :)
macOS also does this by default, but you can change it (though you have to reformat the disk in question). This is generally fine for non-system disks if you REALLY need it for some reason, but afaik it is not recommended for the OS disk due to assumptions that macOS-targeted binaries make (similar to the windows regex version matching that caused problems for a while because it became the unofficial best way to check windows versions for app install compatibility). It’s doubly annoying on newer Apple systems because the integrated SSDs are WAY faster than pretty much anything else you can connect to it. But for the most part, I find it’s more of a nuisance to keep in mind than a real problem (I’ve been dealing with dev-issue MBPs since about 2012).
As in the windows case, this is also an appropriate choice for the average Apple user (though the fact that they’re fairly ubiquitous as dev machines in many places is annoying on several levels, despite the generally solid best-case performance and thermals I’ve observed).
Huh I had thought case-sensitive was default on APFS/HPFS and you had to choose insensitive specifically but I guess not
Just checked on my work box - if you go into Disk Utility and start the process to add a volume, the default selection is
APFS
, and there’s an option in the dropdown for forAPFS (Case-sensitive)
Windows and NTFS support case sensitive filenames. The functionality is disabled for compatibility reasons.
I remember the good old days of Windows MS-DOS where they had an 8 character filename limit lol
8.3, actually!
Gotta go count my files again… oh yeah it’s PROJE~14.BAS
haha that was so infuriating. if their intent was to bastardize the filename horribly to make it noticeable that you defied the DOS limitation, they certainly succeeded. Yuck, totally forgot about the
~1
thing!Funnily enough you can have up to 65536 files in a directory in FAT, so you could technically end up with PR~65536.BAS
And you can enable it: https://learn.microsoft.com/en-us/windows/wsl/case-sensitivity
I actually really like that fsutil case sensitivity can be set on a folder by folder basis so that I can have a safe space to deal with Linux files.
Same on macOS. Apple has “case-sensitive HFS+” as an option for UNIX compatibility (or at least they used to) but actually running a system on it is a bad idea in general.
What happens if i put case sensitive files into an ntfs pendrive and plugged into windows?
Windows sees both files
Can it rename it then? What happens if cd into a folder from cmd with same name?
Windows gets confused, I don’t remember what exactly happens.
But why though? Do you really want a bunch of file.txt File.txt FILE.txt fIle.txt FiLe.txt FIle.txt flIe.txt… I once had a nasty bug the O in a file name was a 0 and I didn’t notice I can’t imagine the horrors this would cause.
Yeah I’ve definitely run into issues where case sensitivity causes problems. Especially in programs that are cross-functional between Windows and Linux. Like when I recently downloaded some bios files for a Playstation emulator and I spend time figuring out and troubleshooting why they weren’t working until it finally hit me the door McFly it’s cause the file name was in lowercase not uppercase. Than I cared to admit to figure out
Oooh, I’ve had that with some device. I think it was a camera or something like that. I’d forgotten about it. It took me ages to figure it out.
surely this is the only place where we would run into stupid syntax problems, right?
imo syntax bugs will be a thing until the end of time, they certainly beat having to rip out 90% of what you’ve done to fix it that’s for sure.
I can make a file named COM1 on Linux. That’s on the forbidden list for Windows.
The forbidden list:
- CON
- PRN
- AUX
- CLOCK$
- NUL
- COM1
- COM2
- COM3
- COM4
- COM5
- COM6
- COM7
- COM8
- COM9
- LPT1
- LPT2
- LPT3
- LPT4
- LPT5
- LPT6
- LPT7
- LPT8
- LPT9
That’s because Windows is generally very backwards compatible.
So is Linux, but it puts stuff like that in /dev
The thing is, a lot of the legacy backwards compatible stuff that’s in Linux is because a lot of things in Unix were actually pretty well thought out from the get go, unlike many of the ugly hacks that went into MSDOS and later Windows and overstayed their welcome.
Things like: long case sensitive file names from the beginning instead of forced uppercase 8.3 , a hierarchical filesystem instead of drive letters, “everything is a file” concept, a notion of multiple users and permissions, pre-emptive multitasking, proper virtual memory management instead of a “640k is enough” + XMS + EMS, and so on.
It still amazes me how well thought out unix was for the era when computing was in its infancy. But I guess that is what you get with computer science nerds from Universities and a budget for development based on making a product the goal, not quarterly profit the goal.
It’s what you get when you design an OS for a mainframe computer that is accessed by many users sharing its resources.
DOS was designed for single-user PC’s with very limited processing power, memory and storage, and no access to networked drives. Lots of its hacks and limitations saved a few hundred bytes of memory, which was crucial at the time.I guess i was meaning compared to DOS but modern Windows, where stupid stuff is broken, and they care more about ads than creating a clean OS
Unix was designed for mainframes, qdos/msdos was designed to be a cpm knockoff the local nerd could use to play commander keen and do his taxes. It’s actually impressive how much modern/business functionality they were able to cram into that.
Unix was designed for mainframes
Unix was never for mainframes. It was for 16-bit minicomputers that sat below mainframes, but yes they were more advanced than the first personal computers.
It’s actually impressive how much modern/business functionality they were able to cram into that.
Absolutely, but you have to admit that it’s a less solid foundation to build a modern operating system on.
In the 80s, there were several Unices for PC too btw: AT&T, SCO, even Microsoft’s own Xenix. Most of them were prohibitively expensive though.
LPT1 LPT2 LPT3 LPT4 LPT5 LPT6 LPT7 LPT8 LPT9
Why does Microsoft hate Life Pro Top listicles?
You’re probably joking, but in case you don’t know: LPT stands for Line Printer Terminal, and LPT1, LPT2, LPT3… referred to parallel ports which were typically (though not exclusively) used to connect a printer.
deleted by creator
oh no, but com5 is one of my favorite words! literally unusable.
thank god it’s not case sensitive holy shit. i don’t understand the kind of person who would see that as a positive.
Seriously.
It sounds like a fucking nightmare. Imagine working on something for days and it refuses to work cause you accidentally capitalized 1 file name and dont notice it?
That sounds like the kind of shit they’d do in tech hell.
We regularly have that problem at work. Works on your development PC on Windows. Push to pipeline, get cryptic error messages. Once we were two people trying to figure it out for half an hour.
Case-sensitive file names. Why.
That’s why you never ever write the filename manually. Always copy paste it!
Oh it’s even better, windows explorer can’t really do case sensitive
But NTFS is a case sensitive file system
This occasionally manifests in mind boggling problems
Yeah, it’s super weird. I once named a file with mixed case, but one of the letters was the wrong case. Renaming the file didn’t work at first. Renaming a file named PAscalCase.txt to PascalCase.txt resulted in no change to the filename. Windows continued to show it as PAscalCase.txt. I had to rename it to something totally different with different characters entirely, then rename it again to get it right.
Renaming it in Explorer does actually rename the file if all you change is the case (in current Windows, at least, see the pedantry below), but whatever mechanism Explorer uses to determine “has this file’s name changed” is apparently case insensitive. So it won’t refresh the file list. I imagine this is yet another one of those damn fool Windows 95 holdovers, or something.
You don’t have to do any multiple-renaming jiggery pokery. Just press F5 to refresh that Explorer window and magically then it’ll show you that the file’s name was indeed changed all along.
Nope. Tried that. Tried DIR in a command window too. But I never specified even what version of Windows I was running, so I’m a little unclear why you’re trying to troubleshoot a problem I was experiencing on windows nearly a decade ago. I guess this is what be mansplained too feels like.
You can enable case sensitivity in windows. It’s only disabled by default.
NTFS is case insensitive because it’s supposed to be more POSIX compatible than its precursors.
WHAT
Lol, I have a NTFS drive in a Linux container so I didn’t have to re download everything I had on windows works perfectly fine, now I’m assuming if I ever try to move it back to windows something horrible will break.
deleted by creator
And i hate it being case sensitive
Yeah, right? Are we pretending that having case sensitive file names isn’t a bad call, or…? There are literally no upsides to it. Is that the joke?
I’m with you here, i find it infuriating and i never ever had the situation where this was beneficial.
Like who tf actually creates a File.txt, file.txt AND FILE.TXT in one place and actually differentiates them with that.
I mean, it’s less of an issue on Linux for both design and user profile reasons, but imagine a world where somebody can send all the normie Windows users a file called Chromesetup.exe to sit alongside ChromeSetup.exe. Your grandma would never stop calling you to ask why her computer stopped working, ever.
Who sends setup binaries? I would tell my grandma to install it from the repository.
Pfft, I would key her the hexdump of the binary via morse code
Something something emacs
Isn’t it less strain on the Filesystem? keeping a sanitised filename next to the actual filename surely has some drawbacks.
For example I might store blobs of data processed by my database in files that have the Base64 ID of the blob as the filename. If the filesystem was case insensitive, I’d be getting collisions.
Users probably don’t make such files, no. But 99% of files on a computer weren’t created by the user, but are part of some software, where it may matter.
And often software originally written for Linux or macOS and then ported to Windows ends up having problems due to this.
For files of casual users it might be of benefit. They don’t care about capitalization. For system files, I find it pretty weird to name them with random capitalization, and it’s actually pretty annoying. Only lower- (or upper-)case would be ok tho.
Well, camel case does help readability on file names. But I guess that’s the point of case insensitive names, it doesn’t matter. However you want to call them will work.
And I love it.
Even more annoying is that it’s very cumbersome to change the case of a file once you’ve created it.
If you accidentally create
fIle.txt
when you meantFile.txt
, the rename function does nothing … and it will keep displaying asfIle.txt
. You have to rename it to something else entirely, then rename it back to the original name with the intended case.mv old new
It actually seems like it even works in explorer nowadays. I’ll be damned, they fixed something…
surely Git warns about stuff like this when you clone it, right ?
It tells you there’s a name clash, and then it clones it anyway and you end up with the contents of
README.MD
inREADME.md
as an unstaged change.sounds like actually a good solution … tho doesnt sound like it would work for more than 2 similarly-named files
I don’t think it’s intended as a “solution”, it just lets the clobbering that is caused by the case insensitiveness happen.
So git just goes:
- checkout content of README.md to README.md (OS creates README.md)
- checkout content of README.MD to README.MD (OS overwrites README.md)
If you add a third or fourth file … it would just continue, and file gets checked out first gets the filename and whichever file gets checked out last, gets the content.
thats better than Git just choosing a file to keep.
Is it just me or is that more of a hinderance?
I absolutely fail to see the utility of having a user called Bob and bob, or a dir called Downloads and downloads. Capitalisation makes sense in code - at a glance I can know I’m looking at a Class or a var, but for system administration it has only ever wasted time, and not once made anything easier.
If capitalisation is used to indicate the start of words then it could make sense for a webserver to serve ExpertsExchange and ExpertSexChange. But yeah having 16 possible versions of “main” would be horrendous.
URLs aren’t case-sensitive though, so wouldn’t those necessarily have another kind of differentiator?
Yeah
Definitely an inconvenient thing.
I honestly don’t get why everyone is agreeing with Windows on this one. I just love how explicit Linux is.
file.txt is fucking file.txt. Don’t do any type extra magic. Do exactly as I’m saying. If I say “open file.txt”, it is “open file.txt”, not “open File.txt”.
The feature isn’t being able to create filenames with the same name, nobody does that. The feature is how explicit it is.
It would be so confusing to read some code trying to access FILE.TXT and then find the filesystem has file.txt
Yeah I’ve been using Linux for a very long time. The amount of time I’ve spent on the case being incorrect is non-trivial. I’ve gotten better at not screwing it up throughout the years but the sum of advantages is far outweighed by the sum of debugging time spent.
Case sensitivity is so much of a problem, that in college, people were always told to keep all their filenames all lowercase, to avoid issues with them.
That’s the “getting better at not screwing up” part.
I’m with windows on this one. Case insensitive is much more ergonomics with the only sacrifice represented by this meme. And a little bit of performance of course. But the ergonomics are worth it imo.
so cool story, on linux theres this thing called you can just not make case sensitive files, i do it a lot.
You can also just, use a case insensitive autocomplete setup as well. If you’re using a mouse idk why you’re even talking about this so that wouldn’t matter.
You can, but assholes out there won’t.
hence the inclusion of the case insensitive auto completion, it’s not 1982, you can use that now.
When you say "canse insensitive file*, do you mean lowercase files? Or is there an option?
Idk why we talking about mouses. When I’m on Linux, most of the time it’s through ssh.
either or, whatever the fuck you want really.
You can just not use capital letters if you feel like it. Works pretty well. Or just use a case insensitive shell handler for pretending it’s not actually cased at all.
Hell im pretty sure you could just render all of the text in a certain case and call it a day lol.
I can make MY files all lowercase, but 99.999% of files on my computer are not created by me. And some of them have capital letters.
do you rent out your computer to other people? I think you’ll live tbh.
They are not created by people. They are created by programs.
what kind of programs are you using that use case in filenames. Smells like a skill issue to me.
I find it really fucking irritating on Linux tbh. It knew what file I meant.
Yeah as someone who uses both this is really not much of a feature.
It’s a lack of a feature really. Case insensitivity takes way more work.
The main problem with case-insensitive is that software sometimes is lazily developed: If a file is named “File.txt” and a program opens “file.txt”, then on a case-insensitive file system it will work fine. If you then format your drive to case-sensitive, the same software now fails to load the file. Source: tried case-sensitive filesystem on macOS some years ago.
Its given me issues installing the Fallout 2 Restoration patch.
Had this issue with Full Tilt! installer on Wine, fortunately the fix was easy
Vscode does not handle this well the one time I accidentally created 2 files with different cases. On one level it recognises them both as separate files, but other time thinks they’re the same.
What I really like is a naming files with a forbidden windows character in Linux and they wont copy over to a windows partition. I end up using a question mark quite a bit for some reason.
Or just name the file
con
. Windows 95 even used to bluescreen if you tried to refer tocon\con
.Sure there was mirc bug back in the day if you named yourself something like con or ps2 or any windows device name it would freeze that device on the windows machine.