Programmer wants to solve a problem, writes some functions, can call them from main()
Programmer is also Sysadmin, can’t be bothered compiling stuff for every simple thing, so adds a CLI parser to call the different functions from main()
End user wants a GUI… but Sysadmin already has all they want on the CLI, so maybe someone puts up some GUI when they’re bored, or it really, really, really makes sense… or end user is SOL
But it’s actually better!
I know it’s easy to think that it’s about showing off, but honestly, the Linux graphical tools are much worse than the command line most of the time.
Installing software is much faster and more reliable using the command line than any graphical tool I’ve used.
It also has an easy explanation: