Had a problem with this quite recently, and solved it by buying a new device. And, since, as you said, a lot of them work on Linux with minimal setup needed, I was able to buy it without any issues. But this does not mean that the problem does not exist.
The solution is to do the research first and only buy what has been verified to work with your flavour of Linux. In many cases, you can simply buy a slightly older product off eBay (or similar).
Personally, when shopping I will ask after Linux support and when the salesperson can't help, I explain that I will only consider the product if it is guaranteed to work. It's a quixotic crusade.
On the other side, old hardware can get a new lease of life thanks to linux.
I have an old scanner (>10y) still working fine 'out of the box' on linux. My brother wanted to borrow it to use it on his laptop, but the scanner is not supported anymore on recent windows.
Also old low-specs computers which were running winXP at first, can still be useful with up to date linux (browsing internet, reading email, using libreoffice, printing documents, listening music, some people don't need much more).
I could have downloaded an entire linux distro and installed in the time it took to do just one Win10 update the other evening.
Don't get me started, my dad is almost 80 and never paid for a micro$oft license in his life, he used to teach maths and computing at the local university, he started with punchcards, PDP8/11 and VMS and never liked windoze and for good reason.
"That is the problem with Linux. Of course it's getting better and better but it's not where OSX or Windows is by any means."
Is this 90s Slashdot?
Right out of my head, I could think of the following skills you need to actively learn to put the command line to use:
- tracking a lot of state in your head as opposed to have all state changes directly reflected on the screen.
- memorizing known commands, flags and microsyntaxes (this is not helped by the essay-like writing style of many manpages and the fact that many commands introduce their own auxiliary concepts that you need to understand before you can use the command)
- finding the appropiate new command for a task you want to do
- memorizing interaction between commands (and the shell) to correctly use pipes, quoting and nested commands (find -exec etc)
- "knowing what you are doing". Many commands are built with the explicit assumption that they are to be used by experts only: If such a command is used wrongly, the consequences can be dire.
A GUI provides significant assistance for all of those tasks and provides opportunities for explorative learning. A command line could do the same but in practice doesn't.
I disagree. My 2-year old niece can barely spell correctly but she is able to select the cartoons she likes on youtube using an iPad. How old do you think she'd be until she figures out how to list files in a dir using the cli?
Mind you, no one ever taught her how to use the iPad, she just did.
That is the problem with Linux. Of course it's getting better and better but it's not where OSX or Windows is by any means.