> Speaking as a windows-familiar but nerdy/techy guy, command lines are nowhere as good.
I mean, speaking as someone working on windows nearly every day, I hate GUI/its GUI. Every single "gui" app is some trash that I wish there were just some cmd line for (and I've been doing this sort of thing for over 10 years, its not lack of familiarity).
There are things I want/find lacking in cmd line, to be sure, but they're generally nothing that a better cli interface/script/wiki can't solve better.
>I loved developing all kinds of command line and UI tools for Windows, so I might be a little biased, but I found the Linux equivalents..well..not as easy and straightforward to say the least.
Well, I think very often commands have very not intuitive names of parameters, very often some seemingly random letters
When it comes to me,
I use Linux for server related stuff, hosting my things and stuff, also I like raw terminal Linux because there's nothing happening, so no distractions
> but then again, as a Linux user, if I have to open a GUI to do something with my files
Well I'm kinda visual/directional when it comes to files and other data structures. Even before I had a PC that could run Windows, ie living in MS-DOS and certainly being aware of navigating and operating the file-system via CLI, I much preferred the blocky-ASCII-GUIs (with menus and "windows" and panes, usually both mouse&keyboard-capable) of Borland, MS and many other software vendors incl "commander"-type fie managers. So.. probably a very longstanding "habit" thing.
The irony is in those days the "power-user" in general was adamant to get as quickly and as far away from the CLI as they can, even though they need to know some basics to automate script and launch stuff. Other than the odd GNU beard. Whereas the 2017 generation loves the CLI, would never have predicted such a thing! =) I've found time and again that once one operates with more than 1 or 2 dozen commands, it's disturbingly often `command --help` or `man command` first because there are only words (that vary from command to command) absent a program based on and supporting the rich set of commonly-used, de-facto-standard spatial gestures and interaction primitives that have evolved over the years.
> Given all these great options, it's not clear to me why anyone would go back to a separate GUI tool?
You're clearly a Linux person. Or at least a command line person. I am too. Quite a few programmers at my work have never used anything but Windows and barely touch any servers. So they don't really use the command line at all, ever.
They also insist on using graphical clients for Git. This is of course horribly inefficient and leads to plenty of problems (mostly due to their choice of the Eclipse Git Client, which seems to have a lot of bugs). But they think the command line is scary and too difficult to understand.
So, my point is, there are a lot of people who have used GUIs their entire life and are used to be able to figure things out by just staring at the GUI and spending 30 minutes aimlessly clicking about. Then when they use a CLI program they have no idea what to do, and get frustrated. Because they're not used to RTFM.
> Every time I see a colleague using command line to do git operations I get itchy and think to myself "oh, come on! I could've done this in gui in seconds".
What operation could you possibly perform significantly faster in a gui than on the command line? I can think of tons that would be far, far slower in a gui.
> to me using a GUI is more of a mark of valuing one's time than that of a novice
I would argue the exact opposite. GUIs are there to make things accessible to non-power users. A command line is just infinitely more expressive and will let you be much more efficient if you learn to use it effectively.
With nearly every program that I use I start by depending heavily on the GUI and then transition to using almost exclusively keyboard shortcuts as I become a power user, as GUIs are fundamentally inefficient.
> I really wish all things like these were first written at terminal CLI apps first and that the GUIs were optional defaults that you could forego entirely.
I really wish all things like these were first written as public libraries and that the CLI/GUIs were optional defaults that you could forego entirely.
That way, you could write higher-level programs to automate tedious tasks, without having to write extra code that does the unnecessary work of wrapping around the CLI/GUI.
> And quite frankly, even though you can do more with a console, its a lot easier to remember how to do things with a GUI then without one.
I don't know about this. Whenever I do something unfamiliar/complicated on the command line I copy every command I used to a text file for later reference. Repeating these actions in the future is as easy as copy and paste. If I figure out how to do something in a GUI and I don't have to do it regularly I will almost certainly find myself flailing and clicking around randomly when I have to do it again in 10 months.
> The commandline experience is terrible. Nothing makes any sense. Not the names of the tools. Not their arguments. Why sometimes something is a binary and other times it's a mode of another tool, etc.
As a casual user of nix, this is the worst. I can never remember commands and it just increases barrier to entry. Git has a bad command line UI but nix is far worse even after their recent command line improvements.
Edit: that said, I do like using home-manager to manage configs across multiple machines even though it can be confusing.
> The command line is a layer of abstraction that could be made unnecessary for programming.
Wow, if I ever saw a comment on HN that was fundamentally wrong on many levels, this was it.
No, a command line interface is not "a layer of abstraction". A command line interface is an interface. That's it. Instead of pressing a button, you run a command. If you want to pass settings to an app when you launch it, you use the command line interface. If you want to script away a task, you call the command from your script.
That's it. It's not a layer of abstraction. It's an interface. They exist for many good reasons.
> I have never seen a developer familiar with the command line.
There are a lot of CLI devs out there, even in enterprises! I highly recommend gaining proficiency with the command line, as it will make you a more productive developer in the long run. While most everyday tasks may have a GUI, if you end up working near the cutting edge, you will likely encounter problems that do not have any GUI alternative. And if you end up working on a rare problem, no GUI may ever emerge. Your CLI skills may be the difference between a 10-minute solve and not being able to accomplish the task at all.
I spent > 10 years building on Windows, and this advice definitely applies to the .NET ecosystem as much as others. On Windows, Powershell mastery will set you apart.
> Granted, we’ve developed graphical user interfaces that keep “ordinary users” away from the command line, but we still expect “serious developers” to drop down into a demonstrably inhumane environment to get anything meaningful done.
Maybe I am too familiar with it, but I have yet to encounter a graphical environment that matches the effectiveness of the terminal and command line programs. I saw systems, that tried to replace shell one-liners with a hundred thousand line GUI application, that no one cared to use.
> And that's exactly where you loose every average user when trying to convince them to switch from Windows to Linux. I work with Linux every day too but the command line elitism needs to stop.
I have made no argument that everyone needs to use the CLI. I like it, and it is a fair criticism of Windows to say that it makes things harder by not having it. That criticism rings true for me and many others. Some other people with different experiences probably think CLI is hard. That's fine. To each their own.
The comment I responded to accused the author of being disingenous. I pointed out that (1) technical users are still users and (2) there are things that if you're used to a unix shell are simply an absolute pain to do on windows.
> The way I see it, the issue here is that you don't know how to use Explorer features, but instead of looking it up and learning how to use it, you're pushing the narrative that somehow it's Explorer's fault for you not bothering to look up such solutions. It' not like you were born with the Linux command line in your head. You had to take the time to learn all those commands and practice. Same with Windows and MacOS and other OS. You need to re-learn certain mechanics whenever you switch OS and it's not the OS's fault you refuse to do that and choose to remain stuck wanting everything to work the Linux way.
> I think [DOS] is easier to understand in it's entirety and find your way around than Unix
Yikes, I recently had to do a bit of development on a windows box and I found the command-line tools (not to mention CMD itself, which seems to have stopped development in 1993) to be absolutely awful. I could barely survive without Cygwin, git bash, etc giving me some semblance of a functional shell setup. I guess it's different strokes for different folks.
>I've never really understood why command lines are so intimidating for people.
Really? The most popular computing device of our time is the smartphone, and you don't understand why people find command lines intimidating?
Command lines are unforgiving, frequently obscure, and will let you delete files and break things without blinking. There's plenty to be intimidated by for people who have no need to learn the skills.
> The problem with this is that it misses the point of most cli programs, which is that they are to be composed with other programs.
That's not true, CLI programs would still exist even if they could not be composed. And I would guess that if you counted how many of our commands include 1, 2, or 3 executables, the 1 column would be the biggest by far.
One of the major headaches of CLI programs is that they're hard to learn interactively because there's no starting point. You have to read the docs. The point of a GUI command builder is that it gives you something interactive to play with to start to learn how the CLI commands work. The point is not to do everything through the builder, the point is to bootstrap people to the point where they no longer need it.
Also, there's no reason a GUI command builder couldn't also show you how to do composition.
> But in the long run knowing all that makes it easier. We could have some GUI for doing all those things but it would end up being a massive mess of buttons EVERYWHERE and endless menus.
I didn't cite the commandline itself as the problem. PowerShell does a significantly better job at making sense than typical core-utils do, but you hear people used to core-utils bad mouth it all the time because it isn't exactly the same as core-utils.
And I submit that your lack of ability to conceptualize a GUI for doing the same thing does not mean one can't exist, but that is beside the point, because I don't think knowing how to use those tools is a necessary and fundamental part of programming anyway.
Someone who is just getting started in a new programming environment shouldn't need to know the ins and outs of a dozen different tools, especially when those tools are used to solve problems that user has not even conceptualized the existence of yet.
Again, this all comes down to one thing: why is it so damned complicated just to get enough of a programming environment running that the user can write a goddamned program? Not write it well, not write it efficiently, just f'ing write it in the first place?
Quote: "..you want to do something complicated that a GUI program can't handle..."
Name one thing that a GUI program can't handle, I dare you. Me, on the other hand, I can point you to a trillion dollar business that uses only GUI and not a single CLI, to say the least.
> This is so obliviously insulting to non-experts.
No, it really isn't. My point is that the command line isn't actually all that difficult. It takes a little more memorization up front, though that hardly makes it only for "experts" (but that seems to be how it mostly settles out in the real world).
I think many people consider the standard GUI to be self explanatory, but, having had to teach some older people how to use a Mac or and iPad, I've found it really isn't. It's only intuitive if you already know how GUIs should work—coming from nothing it's just as impenetrable as a command line prompt.
The dysfunction on the main GUI level is even more obvious: using command line is still not necessary for a Windows user. Linux would be utterly unusable without the command line and the command line programs. I believe that even those who write GUI and GUI apps themselves aren't using them.
I mean, speaking as someone working on windows nearly every day, I hate GUI/its GUI. Every single "gui" app is some trash that I wish there were just some cmd line for (and I've been doing this sort of thing for over 10 years, its not lack of familiarity).
There are things I want/find lacking in cmd line, to be sure, but they're generally nothing that a better cli interface/script/wiki can't solve better.
reply