I am a Linux beginner/amateur and 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.

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.

What tips/ideas do you have for getting better at navigating the terminal, and getting a better understanding of how the os works. What is a good roadmap to follow? And how did you, advanced Linux user, get to the stage your at now?

Edit: my current distro is bazzite just in case you were interested and thanks for all the replies you are all really helpful.

  • colournoun@beehaw.org
    link
    fedilink
    arrow-up
    5
    ·
    8 days ago

    If you’re not already, use it as your main system. Don’t dual boot. Stop using windows and mac. When you run into something you need to do, figure out how to do it on linux. It will be slow going at first, but after a few months you will pick up more productivity than you had before.

    Another commenter recommended the fish shell, but I disagree because fish is not posix compliant. Almost all of the shell script examples that you will find assume posix compatibility and will usually have to be modified to run with fish. Once you get comfortable with a posix-compliant shell, then maybe consider fish or another “modern” shell.

    On the topic of shells, read the bash manual. It’s long and informative. You don’t have to memorize it, but be aware of the different concepts there, and refer to it when you need to. It’s pretty horrible as a programming language, but it’s what glues most of Linux together.

    • pineapple@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      8 days ago

      I am still dual booting because some games I play just don’t work properly but other than that I am doing everything I can on Linux.

      • thingsiplay@beehaw.org
        link
        fedilink
        arrow-up
        3
        ·
        8 days ago

        To be honest, this is my recommendation as well. If you kill Windows and can’t play your favorite games, then its more likely to give up Linux.

  • unrealapex@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    7 days ago

    I’d recommend reading man pages. They’re a great way to understand the programs that are on your system. The Arch Wiki and the Gentoo Wiki both provide additional information that may be of use to you.

  • BaumGeist@lemmy.ml
    link
    fedilink
    arrow-up
    3
    ·
    8 days ago

    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

    1. 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.

    2. 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.

    1. 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.

    2. 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.

    1. 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)
    • tmpod@lemmy.pt
      link
      fedilink
      English
      arrow-up
      2
      ·
      7 days ago

      Very useful, even for someone who has been using Linux for many years. Sometimes you just forget or need that tool you rarely use. tldr can be much handier than parsing a man page when you’re in a pinch.

      I use the tealdeer implementation, but any is fine really.

    • pineapple@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      7 days ago

      I thought rolling releases were still pretty stable to things really break that often?

      • TheFadingOne@feddit.org
        link
        fedilink
        arrow-up
        4
        arrow-down
        1
        ·
        edit-2
        7 days ago

        They can be really stable. I think your milage severely varies on how much you know what you’re doing and how careful you are in respect to certain things.

        Personally I’ve been using Arch for 5 years and I haven’t really had any problems with things breaking on updates.

  • blob42@lemmy.ml
    link
    fedilink
    arrow-up
    17
    arrow-down
    1
    ·
    7 days ago

    start from man man and learn to use man pages. Get used to lookup man pages for any topic before checking on the internet

    • ouch@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      6 days ago

      Learning to read manpages is honestly the best advice. They are pretty dense in information, so maybe that’s why some people go to great lengths to run circles around them looking for inferior sources of information.

    • stinkape@lemm.ee
      link
      fedilink
      English
      arrow-up
      10
      ·
      7 days ago

      This is it. You’re likely not going to get away from needing help from time to time. Instead of focusing on trying to know everything, focus on knowing where to find what you need. It’ll click from there with time.

  • electric_nan@lemmy.ml
    link
    fedilink
    arrow-up
    4
    ·
    8 days ago

    Start running servers if you haven’t already. Use an old computer, or an SBC or VPS and setup some Linux servers. There’s lots of different ways to do it, so mess around and break shit over and over. You can’t help but learn that way, though I would highly suggest you take notes/documentation. This is a habit I’m trying to develop after too long :)

  • Fubarberry@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    1
    ·
    8 days ago

    I learned a lot by using a less common distro (solus). When I would have a problem, the solutions I could find on forums or arch wiki wouldn’t apply to my distro directly, and I would have to look into the solution for long enough to understand what needed to change in order for the solution to work.

    You can probably do this on any distro, just by not using commands you find online until you understand what they’re doing and why that might fix your problem. Arch wiki is a great resource for any distro, even though it won’t always be accurate for the distro you’re on.

  • JTskulk@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    7 days ago

    Read and do! If it’s just a toy you play with sometimes, you might find learning harder. I find that making it your daily driver will motivate you to improve and fix things and in doing that you’ll learn.

  • Croquette@sh.itjust.works
    link
    fedilink
    arrow-up
    1
    ·
    8 days ago

    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.

  • electricyarn@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    8 days ago

    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.