LinuxQuestions.org
Help answer threads with 0 replies.
Go Back   LinuxQuestions.org > Blogs > zeebra
User Name
Password

Notices


Rate this Entry

Learning "Linux", new to "Linux" how to learn etc etc

Posted 11-17-2020 at 07:15 AM by zeebra
Updated 11-17-2020 at 07:56 AM by zeebra

So, I see this question popping up quite often, and it is a fair question. If someone is migrating from say Windows or Mac over to a "GNU/Linux" system, how do you go about learning it? Because, let's realize it, it is not the same as Windows or OSX or those systems.

I think the first and best thing to start learning "Linux" is to 1) start learning "what Linux is", or more correctly what GNU/Linux is. Most likely the system you are on is not Linux, but highly likely GNU/Linux, unless you run something like busybox/Linux or some uncommon variants of Linux with non-gnu native tools. Unlike Windows "Linux" is not really "Linux", it's not a system that feels like a single "binary blob".
This is how you go about learning what GNU/Linux really is, you look at what the system is composed of. So, most likely, but not always, your system will be different components that make up a full system (often a distro), comprising of a "booloader" (not always), an init system, "the kernel" (aka the Linux Kernel), "GNU tools" (aka "the system", "userland"), other system tools and libaries ("system"), a display server (xorg/wayland) and a desktop environment (ex. KDE or Gnome) OR a "Window manager" (light desktop in a way). You need to learn what those components are and how they work together. Then you get an understanding of what the system really is, what GNU/Linux really is, and from there on it is easier to go about learning that system. Simplified:
- boot/kernel, userland system, display server, desktop (ex. GNU/Linux with Xorg running KDE desktop)

So, where do you go about from there? You can't really use the system just from knowing how it is constructed (fallacy: in modern GNU/Linux you actually can, but should you?). So this is where more practical learning starts. Unlike Windows, understanding the system that you are dealing with grants you freedom and power when you use it, and being an open and free system you have basically unlimited power over/with your system.

A desktop is fairly similar to how it is in Windows or other operating systems, so I will not go into or mention that anymore. So, for a new user it makes most sense to start learning GNU, not Linux. GNU is how you interact with your system in a more advanced way than through a desktop. Specifially, it most often happens with a tool called 2) "bash" aka "command line" aka "text box" aka "terminal emulator" aka "terminal", GNU Bash. But how does bash really work? Bash is simply said just a way to work with other tools, so while learning bash, you also should learn 3)"GNU Coreutils" as the most important tools you use in bash. Bash is a topic of it's own, and has all kind of great learning guides and videos available, so look into learning bash, but, part of learning bash is also learning "coreutils", which are frequently used tools throughout your use of bash. There are not so many good learning guides and videoes for coreutils as for bash, so you have to go about it differently.

Bash manual: https://www.gnu.org/software/bash/manual/ && search "learning bash", "bash basics" etc in search engine and on youtube..
Coreutils manual: https://www.gnu.org/software/coreuti...coreutils.html (don't use this), use this --> https://en.wikipedia.org/wiki/List_o...ities_commands
Every "coreutils" command has a manual page, and that is how you get to understand coreutils.. Note down all the coreutils commands and run "man XYZ" for each of the commands in bash. Ex.
Code:
man chmod
or use GNU's own tool info
Code:
info chmod
or alternatively a more concrete and less daunting way "help" "command --help"
Code:
chmod --help
.

Learning coreutils and bash goes hand in hand, because alot of the things you use in bash is coreutils commands from coreutils software. So, take the time to learn bash and coreutils, and you will be well on your way to learning the most important things about GNU/Linux.

Just for brief interlude info, there are other core tools too, other GNU ones, and ones that come with the Linux Kernel, and others too. But forget about that for now.."

Another central topic is "LFSH"/"FHS" 4)Linux File System Hierarchy or Filesystem Hierarchy Standard. The structure of your filesystem (folders/files) is different in GNU/Linux than it is in other operating system. And without knowing it, working with bash and coreutils is a bit difficult. So this is also a core thing to learn when learning bash and coreutils (+ other core/system tools). Learning the filesystem can be done in many ways, and it can be fairly simple. But here is a complex manual:
https://refspecs.linuxfoundation.org...0/fhs-3.0.html
or generally a shorter more specific version can be used by searching "linux filesystem hierarchy" or "Linux filesystem basics" etc with a search engine.. For example:
https://www.geeksforgeeks.org/linux-...chy-structure/

Once you have these 4 points down and have learned them, you are ready to start the real learning process. In summary:
1. What is GNU/Linux (research, understand components of the system, how it is built, how they work together etc)
2. Bash
3. Coreutils
4. Linux Filesystem Hierarchy
5. Revisit point 1 "what is GNU/Linux"


2-3-4 is really about learning bash. Your window into working with your system. And for reference, bash can be replaced with other "unix shells" too, like "ash" and several others, as can most "components" of your GNU/Linux system. Including The Linux Kernel itself! And even GNU.. Have a look into that as point 5.

Once you have bash and all the related things down, it is time to start learning other things, and there are alot of things to learn! But knowing these 4 first things is quite essential to learning more. And generally what you want to do is start learning more about the components of your system, and also other system tools.

Some good examples of other things you can learn AFTER the essentials:
- Bootloader (ex. Grub)
- System configuration and /etc
- Logs, logtools and /var/log
- Init system (ex. SystemD)
- Compiling, making, forging etc (make, gcc etc)
- Linux Kernel
- util-linux
- Xorg
- Desktop environments
- other system tools

The list is endless, but it's all useless if you don't understand your system, how it works, how it is built and/or if you cannot interact with it properly. That's why learning in my opinion goes in the order listed above (point 1-5), before moving on to learning more freely.

Tabbing in Bash is also an option. To see all commands available, or all available on each letter "a tab", "b tab" etc and then reading info or manual on those that interest you.

I guess that's it for now, that's in my opinion the core of learning GNU/Linux.
Posted in best practices
Views 2189 Comments 1
« Prev     Main     Next »
Total Comments 1

Comments

  1. Old Comment
    Here is an additional good resource:
    https://linuxjourney.com/

    Thanks to shruggy.
    Posted 07-27-2021 at 01:12 PM by zeebra zeebra is offline
 

  



All times are GMT -5. The time now is 10:02 PM.

Main Menu
Advertisement
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration