By being named after "global regular expression print" a hilarious in-joke that normies won't get. Everything a normal person deals with uses * for a wildcard search, especially shell globbing does. That means in

grep .* .*

those are two different behaviours of .* that's pretty hostile, don't you think? Certainly doesn't go with the law of least surprise. Regex itself isn't particularly user friendly but if you know it exists and want to use it, you're not going to guess the tool to use it is "grep". On whatever this Linux is[1] (Debian stretch/sid) I "apropos regex" to work out what tool to use, oh "regex: nothing appropriate", how friendly. [edit: "apropos search" has nothing, "apropos count" has nothing. I'm beginning to suspect it's not working but hasn't noticed that it's not working. Typical user-unfriendly computer behaviour.]

By having a "--help" which tells you about the four different kinds of regular expression it can accept, and nothing about what regular expressions are. By saying "basic regular expression (BRE)." as if someone read somewhere in a textbook that they should explain an acronym before using it. Then never uses the acronym again except where to repeat "basic regular expression (BRE)", sounding like an alien trying to imitate good documentation.

By refusing (unless forced) to list files which exist and do important-to-the-user things like control settings I care about, because said filenames begin with a dot. Arguing that this is helpful to the user to hide information, but at the same time defaulting to showing file sizes in bytes and only showing human readable filenames when poked. By defaulting to showing files in columns which is better for a human to read and only showing file-per-line when asked. These are a mess of defaults - for a human, show files in columns, hide files, show sizes in human readable. For a machine, show file-per-line, size in bytes, all files. And if hiding files for user friendliness, don't hide my config files, hide OS files I never use.

By having so many options for controlling output formatting because the system refuses to do anything helpful (like have/enforce/encourage some platform standard structured format) such that every tool has to have this, and every tool does it differently. That's incredibly user-hostile. The idea that you have to learn something, isn't. The idea that no tool respects what you've learned and makes you learn a different way to do the same things over and over and over, is.

By refusing to match text case insensitively unless specifically told to; that default is the wrong way round for user friendliness, it's the one geeks want to be technically correct, not the one normal English-using people want to get tasks done conveniently.

Like the rejection of video and whining "Ugh is there a transcript anywhere, only normies watch video, I'm a superior text reader so I need a transcript" and willfully "not understanding" that looking at human faces and hearing voices has meaning to people, to demonstrate membership of the "I don't have a TV" superior group. And the related rejection of GUIs, the way GUIs seem to have come out of Xerox Parc, to macOS and Windows, then Linux gets GUIs which are cargo-cult copies of Windows and macOS designs. There's probably a reason why pinch-to-zoom started and got popular at Apple before being aped into Windows, when you'd naively assume that Linux with more ways to connect weird hardware to it, more access to source code, more culture of customisation, would have come up with all kinds of things like that earlier. I'm going to suggest that reason is the embarassment of using something a normie would use, with the forgivable exception of a tiling window manager for laying out terminal windows.

You're presumably going to argue that being hyperliteral is user friendly because that's what geeks want, but being a precision tool for someone in-the-know to use for advanced use cases and scripting is exactly what user friendliness isn't. You might then quip "it's just selective about who its friends are ;)" and guffaw to yourself about how superior you are to be a Friend Of Linux(tm); it's related to the way the "community" believes that easy to use software is for inferior people only, and that using harder to use software is a badge of honor. See also the other reply to your comment sneering "knowledge is user hostile, I guess?!" because the only reason you aren't using Linux is because you can't because you're a baby who doesn't know how, hurrr. It's cult heresy to suggest that the reason you aren't using it is because it's bad, you have to assume it's user friendly as a prior and then contort yourself around it[2].

Nobody feels superior for driving an automatic gearbox car. Gearboxes are a kludge necessary because engines don't have the same torque and efficiency at all speeds. Some people have uses where manual gearboxes are better for choice, cost, reliability, maintenance, other people drive a stop-start commute and making them use a manual gearbox is no overall benefit to them. Yet people do feel superior for driving a stick shift, then go around saying people who don't drive one can't drive, can't count to 6, are worse drivers. Offloading gearboxing to the machine is what you would do if you weren't attached to the identity of being a superior stick-shift driver. As soon as the machine was good-enough at it. The more you have to learn about it to use it, the more user-hostile it is. The more safety guard restrictions on behaviour that could exist but don't, the more user-hostile it is. Manual gearbox without clutch needs more skill, so is more user-hostile.

Also, love how it tells you

Usage: grep [OPTION]... PATTERN [FILE]...

but if you type the suggested "grep [OPTION]... PATTERN [FILE]..." that just errors out. Presumably that's usage for people who already know how to use it. For everyone else, try 'grep --help' for more information. Information we could have shown you right here, but we don't really understand humans. Maybe you remember what grep is, and all the options, and regex language, and need information, but that single hint is enough. It could happen.

(Also, enjoy how "grep xyz" complains that there is no such file or directory as xyz, but "grep /etc" complains that "/etc: is a directory"). (Rust people spent a good deal of time on compiler error messages. Perhaps this is an underappreciated reason why Rust is dramatically more hyped than many other languages?)

[1] on windows I can run systeminfo or get-computerinfo to find out what OS I'm using, both reasonably named . Good thing I happen to know to poke at /etc/REDHAT_RELEASE or in this case /etc/debian_version. On Windows I can use type or get-content or notepad to read the file, two tools with names that hint at being relevant, one which isn't so far away. On Linux I can use cat for catenating files, less the in-joke named pager (because less is more! snerk snerk). "type" and "edit" both do something totally unrelated.

[2] You have to contort yourself around the computer on Windows and macOS and iOS as well; but at least they strived to have consistent platform UX guidelines which were pro-user at the cost of more work for the developers, for many years. I'm not arguing there are computers one never has to learn, although Brett Victor and Dynamicland might surpass everyone on that front, I'm more arguing that poorly named, inconsistent tools with text only, no GUI, no graphics, full of in-jokes, and beloved for their hyper-literal do-what-I-say scripting precision are absolutely not "user friendly".