Install TLDR pages from your package manager to get easy access to the most useful information
Linux
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
erasure edit: ok nvm, thanks
I will be using your example of Arch as a great stepping off point, because honestly imo the best way to learn is by having a project to work on
-
RTFM - Read The Fucking Manual. Read the docs, read the code comments if need be. In the case of installing an OS, use the installation guide as a starting point; Arch's is on their wiki, and links to several other sections that go more in-depth about what each step does and why it does it.
-
DuckDuck it - if you don't understand what something is or why you're doing it, search it. If you understand it completely, search it anyway and check the docs because no you don't, you just don't know how little you know. If you know why we do something and what function it fulfills, but not how... Then you're a power user.
Using your example of commands from the internet, break the command down into as many parts as you can, and figure out what each part does. If there's punctuation marks, don't assume you know what those are doing. man [command's name]
is your friend.
-
Do all of the above as often as possible, no matter how slow it makes progress feel. Learning these things the proper way now will save you from days, weeks and months of troubleshooting in the future. I mean it, literally at every step of the process.
-
secondary sources are invaluable, but for this it might help to get into the best way to self-educate. The only gospel are the docs and/or manual that were written by the code/OS maintainers - primary sources - everything else is opinion.
Here's a source i agree with on the best way to self-educate, but keep in mind even Artem is still just a secondary source.
That being said, here's a few secondary sources that helped me understand how OSes work and why:
nand2tetris: build an operating system starting with logic gates and working your way up from there. It has a offshoot site that's slowly being rolled out, that implements it all in a gamified interface: nandgame
os-tutorial: build an OS from scratch
Linux From Scratch: Learn everything about Linux by building your own distro from the kernel up.
Unfortunately everything that taught about the behind-the-scenes aspects of OSes in general—and Linux in specific—were either projects like the above, or just seeing what came up in a DuckDuckGo, Youtube, forum, or wiki etc. search. Below are just resources that teach you about the "power user" level of knowledge, not "super user" but not your average user either.
Fireships' 100+ Linux Things you Need to Know: it's not particularly good on its own, but it does introduce a lot of concepts and vocab for you to then look up elsewhere
freeCodeCamp.org offers a lot of courses that will go over using Linux. None go too in-depth on the fundamentals of Operating Systems, but they will still introduce most of what you need to know for day-to-day use. I don't want to link them all, but just search for linux freecodecamp
on youtube and find one that piques your interest. The longer, the more in-depth—you don't have to watch it all in one sitting.
- And of course, when all else fails: just ask. Participate in the community, don't be afraid of looking stupid. The only people that get no respect are the ones who refuse to accept others' help because they know better than those they're asking to help them. (ignore the gatekeepers who want to project their own need for an identity onto you)
I guess my end goal is to be able to comfortably install and use arch Linux with my own customization’s and be able to fix it when things go wrong.
Why? I have been using Linux for nearly two decades and I am perfectly content with a low-config distro and desktop environment. You don’t have to use Arch but if you insist get a Steam Deck.
I have sort of had enough of copy and pasting commands I find on the internet without having a good understanding of how they actually work.
One thing you could do is start trying to understand those commands.
Read the man pages or the documentation to figure out what the commands are actually doing. Once you have the "what" , you can dig deeper to get to the "why" if it isn't obvious by that point.
After enough of that, you'll go to copy/paste and already understand what it's doing without needing to look it up again.
Then from there, it's a matter of building the instinct to be able to say "I need to do X, so I'll use commands Y and Z."
Attempt an Arch install entirely from memory. You might want to try this in a VM, in case something goes wrong, but just do it. If you can't quite remember what to do, man
and ls /bin
are your friends.
Sorry man I said I was a beginner I have never installed arch before that was more like an end goal I am not there yet I should have said i'm just running bazzite atm.
Sure, maybe I was a little ambitious. But my point is mistakes can bring learning, so it might be worth it to try something "hard". Trying things in a virtual machine is also often a good idea.
My advice would be look up The Missing Semester it’s a free online MIT course on how to use the terminal and it will govern you a better understanding of how to use it and Linux more generally. Really helpful to find your way around and give you an intuitive sense of what you’re trying to achieve.
Then beyond that installing arch is easy with archinstall but it’s probably more helpful to learn about the components of desktop Linux and what they do so that you actually know what you’re doing.
When you are doing stuff in the terminal write it down somewhere else also, on a piece of real life paper or in a simple text document or whatever works for you.
In general I found taking notes while trying to do things in the terminal helped me learn.
-
Learn FreeBSD.
-
Learn Linux.
/s
If you're in the position to take certificates then that's a another way of learning a lot. At least it has worked for me. I've over the last half year taken RHCSA and RHCE from RedHat - though paid by work. Theses in specific are expensive, but I'm sure there are other ones that are cheaper. This would also allow you to 'show off' your skills in an official way should you need to, for applying for certain jobs etc..
I at least find this way to be helpful as you have to motivate yourself to learn and pass an exam to get the certificate. It might not be for everyone though.
With arch, I'd recommend just jumping in the deep and and installing it, looking things up on the wiki when something goes wrong. Just do it in a virtual machine or on an old laptop or something to start with. I broke my previous distro (mint) by doing some really stupid stuff, and I decided to just go fuck it and install arch. I don't think I've ever learned as much about linux as that weekend.
I suppose that I was already pretty comfortable with the terminal since I was studying computer science at the time so I had a lot of reason to use it. I think the best way to use the terminal is to force yourself to use it, programming is great for this but you can try e.g. sorting your photos or mp3 files or something as practice too.
Switch to rolling distro, it will break so many things with each update you'll learn stuff by fixing it. Also you can check https://overthewire.org/wargames/bandit/
I thought rolling releases were still pretty stable to things really break that often?
Here is a bunch of random tips to become more comfortable with the terminal.
Do absolutely everything that you can on the terminal.
When you install something, enable the verbose if possible and snoop around the logs to see what is happening.
If an app or an install fails, look at the logs to see what is the issue, and try to fix it by actually resolving the error itself first instead of finding the commands on the internet to fix your issue.
Instead of googling for your command options, use the help menu from the application and try to figure out how to use the command from there.
on the tailend of a convo in in a discord recently I added a command to the "customize chatgpt" section to allow chatgpt to have a custom "man" like command similar to linux, but that works for all code or commands.
This makes chatgpt give me a Linux command or code snippet formated in a table explaining what each piece of the command does.
when a prompt is givin beginning with the word man followed by code or commands please respond with a table following these rules and nothing else: skip title row, No backticks around command components, No unnecessary rows, column 1 should contain the command component, column 2 should contain a brief command description
Using tldr
to learn commands. It gives you the information you are probably looking for in the man page but it's not buried among lines and lines and lines of arcane stuff and it's formatted in a readable way with helpful examples. Saved my sanity more than once.
I'm not saying "don't read the man pages", they are great way to get a deeper understanding of commands. But when you are just wondering what a command does and how it's commonly used, then a two lines summary + example is much more helpful than an essay going in minute details over everything.
Since it takes a lot less time than hunting the same info in the man page, you can run it before every command you are not familiar with, without too much hassle. Then if you want more info you can check the man page.