What exactly is all this command-line business?

The command-line interface (CLI) is a means of operating a computer by typing commands directly on a command line ( or "prompt"). It was once the normal way of interacting with a computer. It was rapidly replaced in the course of the 1990s by the now familiar graphical user interface (GUI).

Windows, Mac OS and even Linux desktop operating systems are similar in being geared strongly to use of a graphical user interface. All three still share the facility to use a command-line interface for some purposes. On Windows and Mac OS however, the command-line interface – still referred to occasionally on Windows by its historical name, "DOS window" – has faded into obscurity, whereas on Linux it is still very much a part of the computing experience for many users.

For the casual or non-specialized computer user, which includes the majority of Windows and Mac OS users, the command-line interface has acquired almost mythical status. It is associated either with computers of a past era, or with the activities of hackers, generally known from TV movies in which nerdy young males type arcane and impenetrable combinations of characters onto a black screen, upon which all the street lights in Chicago go out.

Although the command-line interface is of much lesser relevance on the Linux desktop than twenty years ago, the fact that it is still used with any significant frequency means that, sadly, these associations are also made with Linux: obsolescence in the sense of being out of step with modern trends, and nerdism.

Why does the CLI continue to be so popular on Linux?

Much of the code (applications, utilities) for Linux has been produced by the open-source community. This has typically involved people producing code for their own, personal purposes, and sharing it with other like-minded people, i.e. other coders. This is quite different to the way commercial software is produced, where more attention is paid to a user-friendly experience for the consumer. For a long time, the target user group was quite different to that of Microsoft or Apple's desktop customers. This is less true nowadays, but only in part, and the repercussions are still felt.

Producing a functioning GUI is a lot of work. People who are interested in utility and are able to manage without a swish, user-friendly interface would generally rather see programmers' time invested in producing greater and better functionality.

A GUI is also a further source of bugs.

Once the commands are familiar, it may often be quicker to perform tasks directly from the keyboard. A GUI may also be accessible from the keyboard, but the trend in GUIs is undeniably more towards the use of the mouse; Microsoft Office's "ribbon" interface is a good example of this.

The design of Linux is such that it promotes the combination of utilities: they can very easily be chained together such that the output of one becomes the input of the other.

A consequence of this is also that even where an application is complex and has a correspondingly complex GUI, its developers may provide the facility for it to be accessed from the command line. This is so common that some level of command-line functionality can be found even in applications of interest to translators, such as LibreOffice and OmegaT.

There is no single supplier of "Linux". Instead, Linux for the desktop comes in the form of myriad distributions, each with its own configuration. An application with a graphical user interface adds a further layer of potential incompatibility.

Even where an application does have a graphical user interface, the distributor may leave it to the user to set up a launch menu from within his or her particular Linux installation. This may require basic knowledge of the command line.

The graphical user interface is also a potential security weakness. Although this weakness is minor, Linux aficionados take security very seriously. For this reason, a distribution's file manager may not be available in root (i.e. administrator) mode; the user is expected instead to perform any administrator functions from the command line. On a multi-user system with a professional administrator, this is generally not a problem, and on a single-user system, any such administration tasks are likely to be minor and few in number. Nevertheless, they constitute an obstacle to new users. Workarounds exist (whereas Dolphin, the standard file manager supplied with Kubuntu for example, cannot be run in root mode, this is possible with the Krusader file manager). Nevertheless, some basic knowledge of the command line is certainly advantageous.

How difficult is it to use the command line on Linux?

Rather than re-invent the wheel, I invite readers to read the helpful introductory tutorial provided by Ubuntu.