So you want to learn Linux to work in tech, or maybe you want to learn Linux for DevOps, but you don’t know where to begin? Then welcome to my guide to the beginner basics of Linux. I’ll explain the jargon, and give you some top tips for getting started with Linux.
If the thought of learning Linux has got you excited – but also strangely scared – then my gentle guide to this wonderful operating system and its community is for YOU. This is the 10,000-foot view of Linux, the things you need to know, and how to start learning.
What is Linux?
Linux (or “GNU/Linux” as it’s officially known) is the common name for a family of operating systems based around the Linux kernel.
Components of Linux
Just like a car, Linux has a range of different optional features and trims. But it always has an engine. In Linux, the engine is the kernel.
The main components of Linux are:
- The Linux kernel
- The user space (or userland)
- The package manager
- The shell
- The desktop environment
Let’s look at each of these sweet components in turn:
1 The Linux kernel
The kernel is the brain of a Linux operating system. It’s what makes all Linux systems… well, tick. It runs happily in the background, and you probably don’t even know it’s there.
The kernel manages your memory and devices, and provides the foundation for applications to run (in Linux these are called processes). Without the kernel, you probably wouldn’t be able to do anything.
Fun fact: Strictly speaking, the name “Linux” refers to the kernel. It was first created by a guy called Linus Torvalds. His name is embedded in the word “Linux”. (In fact, LINUX® is a registered trademark of Linus himself.)
2 User space (or userland)
This next space is the area where you will mostly live. User space, sometimes called userland, isn’t the name of a jolly Linux-themed amusement park, but the area of memory which the kernel sets aside for you to run your own programs.
Most of the programs you will ever run, the dreams you will ever have, and the “stuff” that you will ever do, will happen in user space. Command line utilities, web browsers and database servers all live here. These programs might be provided by the GNU Operating System project, or they might be provided by other communities or companies.
3 The package manager
When you want to install programs onto your Linux operating system, you generally use a package manager. The package manager can search online for software to download, download the right files, and then install them for you.
There are a few different competing package managers, which have snappy names like
apt. Which package manager you use, depends on which Linux distribution you’re running. (More on distributions further below.)
This dependency from one program to other programs, is both one of the amazing things about Linux (and also sometimes one of the most frustrating things!)
4 The shell
The shell is the part of Linux where you will run commands. It’s like your driving seat. This is the place where you issue instructions and run scripts.
When you log on to Linux, you start a shell or terminal. You can also start a shell in a Linux Docker container.
There are a few different shells in Linux, the most common one being the infamous bash. There’s also ksh, zsh and the classic sh (“Bourne shell”). Each of these shells has different features and time-saving stuff, so they’re all very slightly different from each other.
5 The desktop environment / window manager
A desktop environment lets you run graphical programs. Yes, if you want to run Minesweeper, Solitaire or Candy Crush then you’ll need a desktop environment.
But, Linux doesn’t need a desktop environment to run. In fact, most servers don’t have a desktop environment. This is important to understand if you’re learning Linux for DevOps. You’re more likely to be changing files and running programs using a terminal, not a desktop.
Omitting the desktop environment tends to save resources and improve speed (well, in theory).
No two Linux distributions are alike, and you’ll encounter administration challenges, and headaches for days. But once you’ve got a good grasp of the basics, you’ll be well on your way to tackling whatever tasks lay ahead of you.
Distributions are your choice of Linux.
There isn’t one single “Linux operating system”.
There isn’t one single “Linux operating system”.
Instead, Linux is more like an ecosystem, which means there is a lot of composability and choice.
Composability… means that Linux programs are designed to be composed together. Like taking many tiny Lego bricks to build something big.
Choice… means the ability for you to choose different programs to build your own Linux environment. Like building a custom car from your own choice of parts.
Having said that, few people really build a Linux system from scratch, so there are some well-known variations of Linux, which are called distributions, or distros. Each of these distributions includes the kernel, a package manager, a set of userland programs to perform common tasks, and (sometimes) a desktop environment.
(Now do you get why we introduced these concepts first?)
Does it matter which Linux distribution you use?
Linux distributions vary, in terms of what comes included “in the box”. For example:
- Some distributions are easier to install than others.
- Some distributions are designed for playing games.
- Some are designed for specific purposes, like security testing.
- Some follow a specific ideology, like only free software.
- And some are specialised to run on certain types of hardware, like the Raspberry Pi.
And, on top of this, each Linux distribution has its own loyal band of followers.
Many Linux distributions share the same core set of packages, so your Linux knowledge is quite transferrable to other distros.
So the whole concept of Linux can seem pretty tribal to the beginner. And choosing a Linux distribution feel be a bit intimidating.
However, most Linux distributions are very similar. They usually include a core set of packages (from GNU), so if you learn one distribution, you should be able to transfer a lot of that knowledge to another distro.
Learn the Linux distribution that you plan to use day-to-day. By spending time in the same distribution, you’ll get familiar with its userland programs, its package manager, and whatnot.
Linux in the enterprise world
You can run Linux without support, but if something goes wrong, you’ll either need to fix it yourself, or wait for someone else to fix it.
Companies often choose a Linux with commercial support, especially if they’re running critical software.
Some of the more common distributions used in the enterprise are:
Learning Linux tips
Now here are some tips if you’re trying to learn Linux for your job:
1 Get a Linux server of your own
You can get started with Linux by creating a Linux virtual machine on your own PC, using a program like VirtualBox. A virtual machine is a safe environment. In a VM, you can play around and learn, without being too concerned, because you won’t break anything.
Once you’ve learned some of the basics, you might then choose to dual-boot to Linux. This means that you install Linux as a secondary operating system on your PC.
2 Get command line experience
If you’re learning Linux for DevOps, you should force yourself to use the command line. So, ideally, install a Linux distribution without a desktop environment.
If you don’t install a desktop environment, you’ll only have the shell/terminal as your friend. But you will make the quickest progress this way.
When you’re learning the command line, also make time to learn a text editor like
vim. Vim is the text editor that comes with most distributions of Linux, with a quirky set of keyboard commands that take time to learn but will help you get things done quicker.
Top need-to-know Linux commands
There are dozens of Linux commands, some of which you’ll use more often than others. Here are some of the top commands that I use almost every day. You will probably use these often if you are going to be using Linux:
|Command||What it does|
||Navigating the file system. These commands move between directories (folders), and list their contents.|
||Create and delete stuff. These commands can make a directory or delete files.|
||Editing files. Vi, or vim, is the ubiquitous text editor that you’ll find on most Linux systems. It’s extremely powerful but takes time to learn.|
||Searching files. These commands are used to find files on disk and search for text patterns.|
||Installing packages. These commands install or upgrade software on the operating system.|
||Process monitoring. How many programs are running on the server, and how much resources are they using? Useful for troubleshooting.|
||Working with archive files. These commands compress and extract archive files, like zip, tar or tgz (compressed-tar) files.|
||Text manipulation. These commands are often chained together to extract data from files or input, and then used to create input to another command. These are used in DevOps to help write automation scripts.|
3 Know the emergency number, man
On Linux Flight LX101, your emergency exit is
man is short for “manual” and is your best buddy on Linux.
man holds the documentation for almost everything on your Linux system. It tells you how to run commands, how to configure things, and is an absolute goldmine of info.
The only problem is, you need to know how to find things in
man, read it. Spend time learning how to use
man first, and it will pay dividends for you in the future.
To search the manual on Linux, use
man -k <search term>. This will find the manual pages which match your search query.
Outside of the manual, you can also find Linux help on forums and Q&A sites, like [Unix & Linux Stack Exchange][se].
4 Read a book, take a course and/or an exam
If you want to learn Linux and the command line step-by-step, then take a course and an exam. The good thing about taking a course is that it will cover the core topics you need to know.
Try to find a course for system administrators. This will give you a good grounding in Linux commands, managing a server, installing packages, and so on.
Here are some ideas for Linux training:
Training for the Red Hat Certified System Administrator (RHCSA) certification will give you the knowledge you need to be confident with Red Hat Enterprise Linux.
The Linux Foundation offers Linux system administration training and certification. The Linux Foundation Certified System Administrator (LFCS) is a well-recognised certification.