310

From a UX perspective, terminal consoles have a few key advantages over GUI's. These advantages are rarely relevant to end-users, which is why CLI's are used almost exclusively by technical users and "power users" these days. Things done in a terminal are easily repeatable. Imagine needing to configure 5 computers for some purpose. For this small ...


258

In short: command lines are language; language gives expressiveness. An example of a text interface that you use: Google Search. Imagine if you couldn't type your queries as text into Google, and had to select documents you wanted from a menu of choices (like the erstwhile Yahoo web directory). Jakob Nielsen, the usability expert and user-experience ...


94

The long version The answer's basically included in your question itself: a user needs to memorize hundreds or thousands of commands Switching that to hundreds or thousands of buttons would not be an improvement in usability (and even if done would be much much more limited than the text command line.) If you tried to build a GUI general-purpose enough to ...


55

So my question is: is there a logical reason People can type faster than using a mouse. An anecdote: In a past life I was part of a small team working on a piece of software for a niche market. This was in the 90s when the market dominant piece of software had been a command-line tool. This demographic wasn't necessarily tech-savvy so we built a piece ...


48

I'd argue for two main reasons, neither of which is universal. But, both reasons are very good reasons to prefer doing at least some things on the command line: Programmability. It is leaps and bounds easier to code against standard IO than it is to programmatically manipulate a GUI -- or to write custom integrations for the macro runner for each ...


39

A command line interface (CLI) is not so unfriendly as the question makes it sound. We could similarly argue that a point and click interface is bad because it hides internals and makes it hard to compose complex commands. Let us imagine a small child that does not yet talk, but instead points at things. Yes, it gets some tasks done, like asking for bread or ...


35

What is the context of the question the user is answering, and what are the implications? This is the important question that helps guide the appropriateness of "Y" vs. "YES" (or "N" vs. "NO"). In this case you are dealing with a RSA certificate, which is a big deal. Accepting a certificate you don't mean to can have serious implications, so it is important ...


25

Well, I use terminals for nearly everything but a few things like image editing. I'd like to share my reasons for doing so, focusing on user experience. the shell is a language for program composition Terminals (and shells) are what allow me to have a conversation with my computer. I don't use the terminal to do things; I use it to communicate my intent to ...


19

In a word: dysiconia. That's my own coinage, by analogy to dyslexia, and means that I have a really, really, really hard time trying to figure out what the stupid little pictures in a typical GUI are supposed to mean. I know they're supposed to be intuitive, but to me they're not. I think this might be true of more people that you'd suspect, or why else ...


15

I may be on the wrong site, but... User experience is not the only force driving programs. Making and modifying a program is much simpler if you only deal with terminal input and output. Humans are not the main user of terminal programs The command in a terminal are the same ones the machine is using behind most of the graphics, this is a very good ...


9

Backwards Compatibility and Embedded Systems That 30-year-old system that runs the avionics in a B-52 still has to be maintained. As does the micro-controller in the pump that feeds the water tower, or the system that runs the conveyer belts in my factory. Disaster Recovery It takes more time for the system to spin up the GUI from a cold start, time I ...


8

Yes, "mysqld --help --verbose" already exists to get more details on help. I would use "-- help --verbose" or "-help -verbose", this would at least be familiar to mysqld users


8

Because of two simple reasons It works It is powerful Just to add to what had been said, because at the end of the day, a GUI is just a pretty front end to a command line utility. Every time you click a button, a command is issued. There are actions that do not have a button, but there will never be a button with an action you will not be able to perform ...


6

Part of the commonly held belief by technical people is that not having an echo of * makes the password more secure as anyone watching over your shoulder is not aware of the password length - which they would be if they saw the number of * characters. So whether or not the original reasoning were security, the fact that most users perceive not having an ...


6

I would say this post offers a good rational as to why many/most command line programs don't echo. To summarize, it is normally much easier to disable echo, than replace the text, with command line programs.


6

I think your idea won't work well. Primarily because if I first end up in an interface where I expect to fill in forms and see a search bar, my first thought will be that I'm in the wrong place, I expect form fields where I can input my data. Users won't know how to submit their data using your approach. They will need to be instructed or guided, which is a ...


5

This might not be applicable in your case, but I've seen solutions where typing a command line command without parameters will bring up a short help or reference, and typing the command -help brings up the actual help. For example see screenshots below, from the cli for yeoman: Typing without parameters (yo) brings up (an interactive) help dialogue: And ...


4

Generally, I've understood this to mean that Y is the default, and if I hit something other than a Y or an N (such as hitting the spacebar, Enter, or even Q), it will use the Y option. You are correct that this implies that Y is the default, on pressing the Enter key. An input other then Y, N or Enter would generally produce an error or (sometimes) be ...


4

I would go with alphabetical ordering, even if I instinctively disliked it. When considering ease of use, think of the experience for a beginning user and an advanced user. A beginning user may not know what the name of a command is that they are looking for, so they'll just scan the list anyway, no matter the order. Alphabetical ordering won't slow down the ...


4

I believe the terminal is a better solution for power users. It can get you right into the action, you can do any type of advanced task with it, and it's easy to develop for. Sometimes the terminal is unavoidable. Some things just can't be done on a graphical interface, so you have to do it on the terminal instead. Some people, like me, prefer the terminal ...


4

To be brief (kind of), since a number of good explanations have been provided, there are many essential systems where implementing a GUI is simply impractical. This is typically the situation with any server that is only going to do a handful of things and you need to be sure it has all resources available for just those tasks. If some of those tasks involve ...


3

Consider yourself lucky to get such a challenge! I had a stint of time when I was designing mainframe applications - it was quite a shock to have to go from graphics to text-based interfaces, but it forces you as a designer to really focus on the core aspects of design. A few things I've found useful in CLIs: Easy way to access help for commands, ...


3

This becomes particularly important if the program/tool has been in use over a long time, or — as especially happens with software development — you have multiple instances of the same tool installed. Automatic updates is another such instance you may want to find out what version you are running. And when it comes to bug reporting for the tool you simply ...


3

Control and precision The use of terminal needs the knowledge of the commands that make it work. It is not intuitive nor easy for the beginner. But once the user knows the commands a lot of the functionality is faster to type than to find the element on the interface and interact with the mouse. Some of the functionality of graphical interfaces might be ...


3

No, syntax is not translated to other languages. A more common example than terminals is programming languages - which are also English-based. This is actually a major factor in programmers knowing English relatively well all around the world, unrelated to the level of English in the general population of their countries. Another similar factor is that most ...


2

OP: "Can you point me to any literature on designing useful command-line interfaces?" Concept: Command wizard I don't have "literature" per se, but in this post, I'm proposing the concept "command wizard" that presents the CLI as "a friendly search dialog", feeling familiar to Google.com. It relies heavily on regular expressions, dictionaries and synonyms ...


2

In my experience -h -v would be a confusing way to spell this. (Or --help --verbose, which is the same thing written in longopts format.) Three other ways: Some commands provide a quick summary of help if run without any options, with -h/--help providing longer help. If your command does something useful even without options, this might not work. Some ...


2

I don't mean to offend, but it sounds to me like you might be going at it the wrong way. You've already done some testing and put your finger on the problem: "it tends to confuse people who are looking for a traditional browsing experience." That you've come that far is great. Now it seems you've decided the design is fine, but the users' expectations aren'...


2

The error message should probably include details of how to fix it too, with examples if possible. XML is not really always a user-friendly medium, especially when a strict XSD schema is involved. Is it possible to rethink this requirement, so that an alternative method is used, or perhaps allow the XML and/or XSD to be created via a nice UI?


2

It seems to me, most CLI tools will show "use --help" when its --help information contains multiple pages of info. rm might be an anomaly (its man page is small in comparison). I try to use my own "will it scroll" test when deciding whether or not to give usage when a user provides incorrect or no parameters.


Only top voted, non community-wiki answers of a minimum length are eligible