DEV Community


Posted on

How to learn Linux from basic to pro?

I really want to dive deep into learning Linux and I am really serious and dedicated into this. I have installed Ubuntu to my desktop and replaced my windows 10. I am currently waiting for new laptop and install Ubuntu there too.

What I want to know is that, can anyone give me an advice step by step on what to learn first and what to learn next? I want to use Linux in everything, like building website, setting up servers, and many more.

Top comments (5)

ghost profile image

Well my friend, that is a broad question right there. It depends of course of your goal, you could delve ad eternum just with a single filesystem, in fact Linus Torvalds himself has said he's not very savvy about the userspace, I would bet he hasn't used more than 2 or 3 window managers, probably has no idea about databases, webservers, etc. Is just too much, is like said how do I do science or arts. Well that was some kinda useless answer on my part (I don't think is far from true tho), so here's my advice.

Don't try to become a pro-user, there is no such thing, just use it and explore, don't be afraid to try stuff and dig deep, at first you'll have no clue but using the system you'll naturally will be more interested in some topics, go deep on it and that will naturally will make you lose interest in that specific thing, get you even more interested on it or show you the next thing that interest you; rinse and repeat. You may end up helping some project, starting your own or doing something else.

To start the quest you can DDG (yes if everyone can turn Google into a verb I'm gonna use duckduckgo as a verb) about the overall structure of a Linux system, if you have enough disk I would leave a partition to easily install a secondary OS, so if you get interested, for example into install, Arch, Gentoo, Slackware, LFS or some BSD wouldn't be a big deal, just install it and try it, of course everything Arch does, Ubuntu do it as well but to build bottom up can give you an insight on how everything works and having it as a secondary distro let you keep your computing if something fails, you could also use a VM for that but is not the same. If you want to go to the deep end you may want to try Gentoo as a secondary testing distro, you don't need an installer so you can do it from your running Ubuntu, while using your PC normally and take as long as you need :)

Doing that you'll say something like, uhm, what is this tiling WM stuff? or what if I want to encrypt my disk or what is this Fish and Zsh stuff, how can I do a NAS, how do I configure my firewall, can I have a system < 100MB in RAM, etc... somewhere your next step will present itself. Just keep reading, keep learning and maybe share here some of your new acquired knowledge, more eloquently than me, maybe you'll end up writing a book about, who knows.

ameedjamous profile image
Ameed Jamous

Using Linux on your desktop/laptop as your main machine is the best thing you can do to expedite learning Linux. I would recommend the you use the shell to install apps instead of the package manager, this gives you comfort with Terminal and basic commands.

Then you can start googling for things you want to do, you'll find a lot of resources that give you step by step commands that you can copy and paste to build things like Web Servers to host websites and so on.

You have definitely made the right OS choice.

Have fun!

dotmendes profile image
Júnior Mendes

Get some experience using the shell on a daily basis (managing packages, searching files), as Ameed suggest. Then, you can focus on some core concepts:

  • Users, groups and permissions;
  • Filesystem hierarchy;
  • Shells and Shell Scripts (zsh and fish will improve you productivity);
  • Desktop Environments (KDE Plasma, GNOME Shell, XFCE, etc);
  • Universal Package Formats (snap, flatpak, appimage);
  • CLI Text editors (VIM, Nano);

For Ubuntu, at the beginning, learning how to handle PPA's and install .deb packages with dpkg could be useful.

dotmendes profile image
Júnior Mendes

Latter on, you can have some good time with network services (like openssh, openvpn, samba, etc) or even pentest. Switching to Fedora (or Arch) could also be a good challenge. And, at last, you can study about Docker or virtualization.

sujed profile image

I would recommend that you first learn basic shell commands, after that personalize it as you want.