next up previous contents
Next: The Shell and Command Up: Unix and Linux Environments Previous: other GUIs


Command Line

The graphical interface is very convenient for specific tasks, which may be performed with just a few clicks. Nevertheless, there are many situations where it is not the best choice.

For instance, if you have to run the same program on a large set of files, which are in different directories, using just the GUI is very cumbersome and error prone. You would have to move the mouse all the time and find the right icons for the files you want, one at a time. Some of the programs are prepared to take care of this, but this is not the general rule, and they do not cover all the possible cases.

Another situation is if the programs you are running take a long time to run, and you need to check the output or success of the execution before proceeding. You should check the screen all the time to see if anything went wrong and take the appropriate decision.

Basically, although a GUI is very good for interactive processing, it is hard to automatize tasks, specially if they involve repetition.

The alternative is the text interface, basically a terminal where you actually type what is to be done, by means of a set of commands and some special features, presented later in this chapter. Writing the commands gives you the ability to specify the tasks with much more detail and do job control -- like repetition and error checking, since the interface has a language specially crafted for this purpose.

Even though you have to type, you do not loose the interactivity. In fact you can launch graphic applications and collect their results without problem. Mastering just the basics gives you a sensible increase of productivity, for the following reasons:

The graphic user interface provides an abstraction at a higher level. As a consequence, it is possible to find solutions to standard situations much faster, but does not allow detailed control of the application. When a finer control is needed, in many occasions it is not possible to stay at a such abstract level.

The option is then to choose tools and languages that offer some abstraction but at the same time allows the interaction with other tools which work at a lower level. Some examples are code generators and job control languages. The operating system itself must provide some basis to machine abstraction and an adequate interface.

These tools must be as flexible as possible to allow the use in a larger number of situations and, at the same time, do not impose on the user the knowledge of a great number of ``specialist'' applications. At least in some cases, portability is also an important issue.

Flexibility is associated to the ability of adaptation of a program to several necessities. This can be obtained if the tool has several basic operations which can be combined in several ways providing different solutions. Unfortunately this implies in a lower abstraction.

Another way is to have tools which can be adjusted by options or allow easy extensions. Eventually some extensions can be built at a much lower abstraction level, but in such way that the interface is simple.

To combine this two views, the tool must have a high expression ability. The user must be able to easily describe a large variety of specifications and adaptations. This is much more natural in a text interface, since the user is not limited to already fixed options.


next up previous contents
Next: The Shell and Command Up: Unix and Linux Environments Previous: other GUIs
gubi
2006-01-18