You probably have a desk. You can put things on the desk, or move things, or pile things on top of one another. You have a folder in which you put important documents. Maybe that folder sits along many other folders in a filing cabinet.

Your computer also has a desktop. You can create files and folders, which appear as magic. Some time ago, computers did not have desktops. Computers did not have mice, windows, or icons. “It must have been very slow to use computers,” I hear you say. “I’m glad it’s no longer necessary to learn how to use a computer without a graphical interface,” I hear often.

I must pull you from your fantasy. Graphical interfaces are that: interfaces. They allow us to easily interact with an underlying system. But what if I told you you can interact with the system directly, the same way that was used to create the system in the first place?

mkdir week{1..5}

Many clicks of the mouse are required to do that line of code using a graphical interface. It creates five folders, called week1 to week5.

Even more powerful is nesting:

mkdir -p week{1..5}/lesson{1..3}

As that creates folders week1 to week5, with each folder having the following three sub-folders: lesson1, lesson2, and lesson3.

Naturally you can use the console for far more than creating folders. Time-consuming tasks like finding which files in a directory contain the text “Find me”:

grep -l "Find me" *

You still haven’t convinced me

Fine, the console looks ugly and you don’t want to use it. The time it saves isn’t worth the effort of learning how to use.

Well, you don’t have a choice.

If you want to deploy your applications to a server, you need to use a console. There is simply no other reliable way to interact with a remote server. Graphical interfaces are too slow to load over an internet connection and they require too much power.

It is very likely that if you use a web server, it will be running some Linux distribution ( This makes it all the more important for you to learn to find your way around a Linux console.