Register to get access to 15+ free programming courses with interactive exercises

Operating systems CLI fundamentals

In the 1970s, long before Windows came along, the Unix operating system was born, which was designed to run on mainframes. The original name of the system was UNICS (Uniplexed Information and Computing Service), but eventually it became known as Unix. There were no personal computers in those days. Computers were synonymous with mainframes, large machines that occupied entire floors of buildings.

By the way, the language C was created for writing Unix


One such computer could be used by many people at the same time, which imposed certain requirements on the operating system controlling the machine. Primarily, this applies to multi-user mode. Unix allowed you to connect to a computer through terminals, special devices which served only to input (keyboard) and output (monitor) information, and all processing was performed directly on the server.


Unix was a very successful operating system, but it was paid and closed (you could not see the source code). It served as the foundation for new systems, although they gradually lost backward compatibility. In other words, you had to write a program for each operating system you needed to support. This situation made life so difficult and expensive that the POSIX (Portable Operating System Interface for UNIX) standard was adopted. Now, it's not just one standard, but a whole family of standards describing the operation of key components of the operating system and ways of interacting with them from programs written in C.

At the same time, networks began to actively develop and first came the prototypes of the Internet, and then the Internet itself. Computers got smaller and servers got bigger. In 1991, a student, Linus Torvalds, decided to write his own free operating system that was compatible with the POSIX standard. Thanks to the Internet, Linus was able to build a large community of developers who quite quickly released a working operating system called Linux and, most importantly, made its source code available to the public. Since then, the popularity of Linux for server environments has grown rapidly.

But Linux itself is only the operating system kernel and is useless without the accompanying software. By the time Linus began his development, the GNU Project (a recursive acronym for GNU’s Not UNIX) founded by Richard Stallman, which had developed and continually evolved the free software that comprised the basic tools for developing C programs: the Emacs text editor, the gcc compiler (GNU Compiler Collection or GNU compiler set), the bash shell (bourne again shell или "reborn" shell), and the libc library of essential functions for C programs. All of these programs were written for Unix-like operating systems. Therefore, they used standard UNIX system calls — POSIX. Because of this, Linux immediately began to ship with GNU utilities such as archivers or the bash shell, which we'll start to learn in this course. A surprising fact for people familiar only with Windows is that Linux (like Unix) does not have a graphical shell. That doesn't mean one can't be added. You can! Moreover, there are many different optional graphical shells.

History Of OS

Currently, Linux is not used in its pure form. Instead, end users deal with distributions (distros). In addition to Linux and GNU software, distros include utilities for installing and configuring Linux itself and support for regular updates of the kernel itself and its environment. However, the same Linux runs inside either way. The number of distros is huge, but some are particularly popular, some are made by enthusiasts, others are backed by big companies. The most popular distros are Ubuntu and its variants: Ubuntu Server, for example, is optimized to run on servers, and Xubuntu, which is a variant of Ubuntu with a graphical interface suitable for low-power computers. Ubuntu is completely free.


Windows, unlike Unix-like operating systems, was originally created for single-user mode and never attempted to be POSIX compatible. It has managed to capture the PC market, but it is almost never seen on servers, even though Windows Server is available. Firstly, it costs money, and secondly, Windows is not POSIX compatible at all. For this reason, Windows is poorly suited for web development. Although it has a command line, known as cmd.exe, its functionality leaves a lot to be desired and experience with it is of no help when working in a Linux environment, which you will have to deal with anyway.

As is the case with learning foreign languages, we recommend learning Linux and its command line by deep diving into it. To do this, you must install Ubuntu as your primary system or activate it within Windows. If you are a lucky Mac owner, you don't have to do anything. The macOS is based on Unix and is even more POSIX-compatible than Linux. It has a great command line and toolbox to work with.

Henceforth, all examples in the course that require the command line are shown exclusively on POSIX-compliant operating systems.

Do it yourself

  1. If you have Windows, set up your environment according to this article.

Recommended materials

  1. Install Ubuntu as main OS
  2. Install Ubuntu on Windows
  3. Books about OS

Аватары экспертов Хекслета

Are there any more questions? Ask them in the Discussion section.

The Hexlet support team or other students will answer you.

Sign up

Programming courses for beginners and experienced developers. Start training for free

  • 130 courses, 2000+ hours of theory
  • 1000 practical tasks in a browser
  • 360 000 students
By sending the form, you agree to Personal Policy and Service Conditions

Our graduates work in companies:

<span class="translation_missing" title="translation missing:">Bookmate</span>
<span class="translation_missing" title="translation missing:">Healthsamurai</span>
<span class="translation_missing" title="translation missing:">Dualboot</span>
<span class="translation_missing" title="translation missing:">Abbyy</span>
Suggested learning programs

From zero to a developer. Refunds in case you won't get a job

Frontend Developer icon
Development of front-end components for web applications
start anytime 10 months

Use Hexlet to the fullest extent!

  • Ask questions about the lesson
  • Test your knowledge in quizzes
  • Practice in your browser
  • Track your progress

Sign up or sign in

By sending the form, you agree to Personal Policy and Service Conditions

Toto Image

Ask questions if you want to discuss a theory or an exercise. Hexlet Support Team and experienced community members can help find answers and solve a problem.