From LQWiki
The most common command line interface for Linux is the bash. It is mostly appreciated by techies like sys admins, programmers, and advanced users. Here, some of the general principles of Man-Machine interaction are discussed and in addition how various tools can be used for better command line experience.
Any user interface typically needs to address the needs of two categories of users: Frequent users and less frequent ones. In a typical GUI program like an internet browser, different levels of operation are thus usually available. The infrequent user will feel more comfortable with a menu oriented mode of operation, whereas the frequent user will take much advantage from less intuitive approaches, like the usage of hot keys for instance.
Regarding the command line interface, frequent users don't have a problem remembering short-cut keys but they want to do it with minimum key strokes. Infrequent users have an inverse need; they can't remember mnemonics or cryptic key sequence, but would be ready to type more keys.
This section assumes that an infrequent user (with reference to a command) is looking for a better experience. Unfortunately the default shell mode is more tailor-made for frequent users.
An important consideration in any man-machine interface is at any time, most human beings can't hold more than 6-7 chunks or distinct entities. This has been proved by research that this is the capacity of short term memory.
Many times, the default command-line interface forces the user to hold more than this many entities in their mind. Whenever the user experiences a cognitive overload, they can kind of identify that the user-interface is stretching their working memory limit and they should use tools to supplement their working memory.
Here we can see, how different tools can help to overcome these issues.Two major programs are of immense benefit. They are
screen
vim - ( a powerful text editor, other editors like Emacs should also do.
But the author's experience is limited to this)
It is a kind of a misdemeanor to call it just a text editor, it is beyond that. It is a kind of framework.
An analogy with GUI world.
screen Equivalent of a window manager in a GUI. Enables user to do multiple interactive tasks and keep switching between them. Vim Equivalent of a widget framework. A widget framework like QT or GTK, gives a unified user-interface experience across multiple GUI programs. In the same way, this can give a unified experience in dealing with textual information.
Many times a PAGER program is the most often used program. Typically programs like less, more or pg are more often used as PAGER. In many contexts, use of vim as a PAGER gives a great deal of convenience too.
Here we can see how using the different features of these programs can enhance the CLI user experience for the following activities.
Typical activities:
1. How to find out what command/program exists to do an activity.
2. You have used a program most of the time with common options, now trying to use a less frequently used option or complex option.
Composing command line param
3. To interpret/modify a configuration file
4. To interpret the output of a program.
Program output interpretation
To know why Command Line interface sucks for many people but not some.

This page is available under a