The Arch wiki is a great learning place.
How Linux Works might be what you're looking for
But to truly master Linux, you need to understand its internals, like how the system boots, how networking works, and what the kernel actually does. In this third edition of the bestselling How Linux Works, author Brian Ward peels back the layers of this well-loved operating system to make Linux internals accessible.
Isn't it too advanced? Seems like a good book but like the opposite of what I meant - I'm curious about beginner resources that will get people interested, knowledgeable and comfortable about using linux on a daily basis as much as they are with windows after decades of using it, not to turn them into a "superuser familiar with internals like kernel, networking, LVM".
The thing is, the day to day is mostly your distro. There are several that hide most stuff away and just work, but a resource would need to be distro specific, and the ones you'd want for a beginner are pretty straightforward. They're a start menu and an app store that work pretty much how you expect.
The hang-up is mostly "I need word" and being confused by a different document editor, or things like that, and the fact that a lot of open source alternatives to popular applications don't have as much work done on casual friendly UX. So maybe you'd want something like "alternative to" and guides to basic usage of common replacement apps?
Most anything past that is how the OS works.
Isn't there a lot of overlap though, at least between OSes that are of the same type (like debian/ubuntu)? How to set up users, knowing that you need to manually configure automatic mounting of your drives, knowing how/when to use flatpak or apt or .deb, where to install apps... These are not really intuitive things, especially for someone coming from windows, and most "how to install linux" guides don't really go into these in any meaningful way.
For instance at first I thought I could just keep a list of apt commands and make an "easy to reinstall" linux script at one time, and that lasted for whole of 10 minutes before I realized every app needs manual intervention in one or another way, or has a different way of installing. Also, as many people I just prefix everything with sudo to get it to install, but who knows if that is the correct thing to do? not me at least
I realized every app needs manual intervention in one or another way
How do you mean? What kind of interventions?
or has a different way of installing
This is just a consequence of trying to use messy flatpaks in addition to your distro's native package manager. I get that people coming from Windows want to continue to do things the Windows way, but grabbing programs from the web is a bad habit on Linux.
Also, as many people I just prefix everything with sudo to get it to install
This is generally correct for native package managers like apt. I would never trust installing anything foreign with elevated privileges. Rule of thumb for learners: Don't run anything with sudo, and when you encounter commands that fail to proceed, investigate why. Only then, if it truly requires elevated privs, do you sudo.
I thought I could just keep a list of apt commands and make an “easy to reinstall” linux script at one time
Saving the "dot files", directories in your ~/home whose names start with a period, will preserve configuration settings for pretty much all of your user-facing programs. Copy these directories back into a fresh install and you'll find that there is little reconfiguration required. I personally do this with KDE-Marble, and it has been the same program, building upon the same map cache, since around 2017.
I'd say that the best learning resource you can have is a spare computer specifically dedicated to exploring Linux, with which you can install and break and configure and break again without worry. Learning Linux can be like playing a roguelite, and I mean that also in the sense that it can be fun.
I'm trying out popOS and even the native package manager (popOS shop?) installs most applications as flatpaks afaik? I have no idea where they end up being compared to windows' program files or what kind of defaults they install with. I started putting my custom downloaded AppImages into the ~/Applications folder and then used AppImageLauncher to actually have them show up in search.
Then I will run into something like docker which is not in the shop and has a ton of commands you have to run in order to get it to work, like uninstalling conflicting packages, installing some certificates and keyrings and i dont even know what - it was supposed to work better than on windows but it is nowhere near as neat as there!
Then I install samba (again, not available in the popOS shop) and I have it running but i have no idea whether it's set to automatically run or not. Searching for it with GUI tools doesn't show it as installed anywhere so in this case i have to rely on the terminal. The popOS store does have a list of installed apps but the search field gets disabled when you go into this screen because it's only used for browsing the shop, not through your installed apps?
I’d say that the best learning resource you can have is a spare computer specifically dedicated to exploring Linux, with which you can install and break and configure and break again without worry. Learning Linux can be like playing a roguelite, and I mean that also in the sense that it can be fun.
This is what I do but the issue is that I have no feedback on whether Im doing the right thing or if im making the life unnecessarily difficult for me. Games will slap you and make you redo something if you fuck it up, linux just makes you live in agony until sometimes breaks and you dont know why.
installs most applications as flatpaks afaik?
Interesting. I did forget that there are some distros out there trying to shoehorn this as their official package distribution method.
*Passing this hot potato to the next commenter... the great outdoors is calling me.
Haha no worries, that's also a common linux experience :P
I'd say that someone like you is more interested in using the command line to manage your package installations, so you can safely ignore the popshop as a convenience for others who are less interested in the details of their system
I want to use the terminal and I'd prefer the simplicity and reliability of a single command over various GUIs, but it doesn't feel like it's consistent or simple with the terminal either. For example with VSCode, it doesn't have apt-get install vscode
command (at least not listed on its installation pages) - it recommends manually downloading the deb file and then apt installing it.
https://code.visualstudio.com/docs/setup/linux
I just don't know whats the proper / good way of doing it anymore. The popOS shop is horrible, you cant stop running installations cuz it freezes and stops giving any feedback, sometimes it breaks and doesn't open fully, the UX is bad, but i dont know what else to do. At least with the shop I have a clear list of installed apps and a place to uninstall them, if i do it with the terminal I have no idea where they end up living.
dpkg -l
will list all .deb packages installed on your system.
That gives me a list of over 2000 rows inside of the terminal that i cant apparently search or sort -.-
Then I tried to be smart and do man dpkg -l
to see if that has any options on how to use it better, and instead i got another huge text file that i cant search or navigate through properly
So then i googled how to open it in an editor and tried man dpkg -l | nano
, which does open it for a second and then crashes, i just get "too many errors from stdin, buffer written to nano.12608.save" in the terminal
ofc something as simple as map dpkg -l | vscode
doesnt work either
I'm just tired
It can be exhausting to know just enough to see results that aren't quite what you're after, but not quite know enough to refine it to get what you want. And you're supper close to it. Here's some things to fill the gap (and correct a misunderstanding or two):
gives me a list of over 2000 rows inside of the terminal that i cant apparently search or sort
The dpkg -l
command can be postfixed with a search pattern:
dpkg -l lib*
will return all packages with names that start with lib
||/ Name Version Architecture Description
+++-====================================-=================================-============-===============================>
ii libaa1:amd64 1.4p5-46 amd64 ASCII art library
un libabiword-3.0 <none> <none> (no description available)
ii libaccountsservice0:amd64 0.6.55-0ubuntu12~20.04.7 amd64 query and manipulate user accou>
ii libacl1:amd64 2.2.53-6 amd64 access control list - shared li>
ii libaio1:amd64 0.3.112-5 amd64 Linux kernel AIO access library>
ii libalgorithm-diff-perl 1.19.03-2 all module to find differences betw>
ii libalgorithm-diff-xs-perl 0.04-6 amd64 module to find differences betw>
ii libalgorithm-merge-perl 0.08-3 all Perl module for three-way merge>
ii libamd2:amd64 1:5.7.1+dfsg-2 amd64 approximate minimum degree orde>
ii libamtk-5-0:amd64 5.0.2-1build1 amd64 Actions, Menus and Toolbars Kit>
ii libamtk-5-common 5.0.2-1build1 all Actions, Menus and Toolbars Kit>
un libansicolor-perl <none> <none> (no description available)
ii libapparmor1:amd64 2.13.3-7ubuntu5.3 amd64 changehat AppArmor library
ii libappindicator3-1 12.10.1+20.04.20200408.1-0ubuntu1 amd64 Application Indicators
ii libappstream4:amd64 0.12.10-2 amd64 Library to access AppStream ser>
un libapt-inst1.5 <none> <none> (no description available)
un libapt-pkg <none> <none> (no description available)
un libapt-pkg5.0 <none> <none> (no description available)
ii libapt-pkg6.0:amd64 2.0.10 amd64 package management runtime libr>
un libarchive-tar-perl <none> <none> (no description available)
un libarchive1 <none> <none> (no description available)
ii libarchive13:amd64 3.4.0-2ubuntu1.2 amd64 Multi-format archive and compre>
un libarcus3 <none> <none> (no description available)
ii libargon2-1:amd64 0~20171227-0.2 amd64 memory-hard hashing function - >
dpkg -l ?lib*
will return all packages with names that have lib
in the second third and fourth character positions.
||/ Name Version Architecture Description
+++-========================-========================-============-====================================================
ii glib-networking:amd64 2.64.2-1ubuntu0.1 amd64 network-related giomodules for GLib
ii glib-networking-common 2.64.2-1ubuntu0.1 all network-related giomodules for GLib - data files
ii glib-networking-services 2.64.2-1ubuntu0.1 amd64 network-related giomodules for GLib - D-Bus services
un glib-networking-tests <none> <none> (no description available)
un glibc-doc <none> <none> (no description available)
ii klibc-utils 2.0.7-1ubuntu5.1 amd64 small utilities built with klibc for early boot
un zlib1 <none> <none> (no description available)
ii zlib1g:amd64 1:1.2.11.dfsg-2ubuntu1.5 amd64 compression library - runtime
Then I tried to be smart and do man dpkg -l to see if that has any options on how to use it better, and instead i got another huge text file that i cant search or navigate through properly
Yeah, man pages are overwhelming at times. There are ways to navigate them in the terminal, but I would have to look that up because I pretty much never do that. It's easier for me to just look it up online or open the text in an editor. Looks like you had the same idea with trying man dpkg -l | nano
and man dpkg -l | vscode
and you were so close to the end goal of reading the man page in a text editor!
Here are two ways you can make it work:
For both methods you will need to drop the -l
so just use man dpkg
.
Method 1:
Use the >
operator to redirect the output of man dpkg
to a file:
man dpkg > dpkg.man
(note that the file name after the >
operator above can be anything you want the name of the file to be. I chose dpkg.man
because it seemed like it would be easy to remember for me.)
Then open the file using nano or vscode:
nano dpkg.man
code dpkg.man
(note the name of the package for vscode is code
)
Method 2:
Use the |
operator to send the output of man dpkg
to a nano filebuffer:
man dpkg | nano
Then open file that was saved when nano returned an error message. In your case:
nano nano.12608.save
code nano.12608.save
(This second method feels a bit janky but it works.)
Since you were talking about using apt-get
and apt
to manage packages, I'll suggest nala as a more beginner friendly alternative that is more verbose and explicit about what it is doing. Give nala a try.
I hope this helps and that you can return to learning how to get things done using Linux with renewed resolve now that you've had some time away from it.
Keep asking questions! You're probably learning more than you realize already.
Thank you very much for such a detailed answer! This is exactly the type of stuff I wanted to learn in advance from some generalist tutorial because honestly, I feel bad constantly asking such basic questions and there's no guarantee there will always be someone like you to answer them. In retrospect it's probably the smarter and simpler option to just google the command docs online, I just wanted to do it "right" since I heard all the praise about man
command and you never know if you're working offline.
I'll check out nala, could be a good learning tool, thanks!
I find that books and resources on basics are hard to find motivation to get through. I don't have a problem researching for an hour or two when I'm stuck on something that I want to accomplish, but that same information would be impossible for me to focus on if there's no immediate motive to read it. Knowing that some information might generally come in handy later is often not enough for me to stick with it. So I don't think people really mind helping people with "basic" questions, but their availability can unreliable.
That said, there are a lot of good suggestions in both threads you started and if you can stick with any of them it will probably be a big boost for your comfort level in using Linux.
I heard all the praise about man command and you never know if you’re working offline.
Now you can open man pages in your favorite text editor with all the associated navigational conveniences!
I’ll check out nala, could be a good learning tool, thanks!
A lot of people who try nala never switch back to apt, I hope you find it more pleasant to use.
There is and there isn't.
Some things are pretty standardized. Users and groups, permissions, systemd (usually), a lot of the underlying architecture is pretty much the same everywhere.
A lot is very much not standardized. Booting, networking, desktop environments, what specific software is installed, the specific package manager in use, I could go on and on.
To learn the former, the book I recommend is the most accessible thing I've read. You don't need to read everything, but portions were very helpful. To learn the latter, your distro will have the info you need, or should at least tell you what to look up elsewhere.
Oh man, you’re in for a rough time. Nearly anything you mentioned is controversial in Linux, it is highly opinionated technology.
Just go into this with an open mind and don’t take things as gospel, always remember, only Sith talk in absolutes.
Plenty of good content on YouTube, personally I like people focusing on technological aspects.
https://youtube.com/@titustechtalk Titus has a lot of mixed content, best to just scroll through his videos for specific things you are interested in.
https://youtube.com/@michaelnroh Michael focuses a lot on DE and is quite insightful about them.
https://youtube.com/@stephenstechtalks5377 Stephen isn’t very active recently, but his older videos are still gold and almost reference material when they impact something you want to do.
https://youtube.com/@christianlempa Christian is all about docker, podman, kubernetes and networking. If you want to do something related to that he probably has a video about it.
https://youtube.com/@a1rm4x Linux gaming, how to set it up, livestreams etc. He actually knows what he is talking about, not as knowledgeable as others in this list from a technical pov but you can tell he compensates with pure time and effort.
I literally was thinking of starting a channel just so I could speak about what you mentioned.
I see people moving on to Linux from Windows (which, by the way, I think is a blessing!) but with little to no clue on how Linux works. It certainly doesn't help that the Linux ecosystem is so diverse, because even choosing a distro can be daunting. So having a clear cut path could help tons of people do the transition.
Would that add value to you? Let's say, multiple videos explaining the filesystem, useful commands and best practices, useful shortcuts and how to customise your desktop to your flow, etc
Also, I find the content by @TheLinuxExperiment very informative and a good way to keep up to date with things. It also explains the difference between distros, ways to install apps etc..
As mentioned in another post I'm more of a reading than video-watching person but I'll take any resource I can get. I saw in another thread that someone recommended this video but it is 6 hours long so i haven't really delved into it yet
Uff, 6h is a stretch. I often space out in videos longer than 10mins 😆
Reading wise, maybe I can recommend you linuxjourney.com. It won't answer the backups question, but it's a great way to nail the fundamentals! I can't recommend it enough, it's like a free course :)
As for the backups bit, Pop!_OS offers an OS refresh feature where your files are kept instact, afaik. So depending on your chosen distro, you might not even have that problem! Otherwise, DejaDup does a good job backing up personal files, but not system settings, I believe.
The manuals. RTFM exists for a reason. If there's ever a command or a config file you're not sure about, just type in man the_command
.
If you can't access the man pages for some reason, there's an online version on linux.die.net.
Also, the Arch Wiki, Gentoo Wiki, and Debian Wiki offer good information for all distros. I like Arch Wiki the best.
I don't think such a resource exists for Windows or Mac, people just figure it out because enough people around them are using it. Up until the mid 2000s Macs were just as hard for windows users to switch to. It wasn't until they put massive effort into their UX, and dominated the mp3 and smartphone markets that they established themselves as viable. Now you have people who have only used Macs/iphone/ipad who feel lost when using Windows or Android.
The downside (and upside) of linux (the kernel itself) is that it's not profit driven. So the best new user experiences tend to come from companies who are financially motivated to attract more users. Ubuntu, PopOS, and Zorin tend to write easy to follow guides about how to do specific things in their specific distro.
But there's not much of an incentive for anyone to create a broader guide about the complex moving parts of the wider linux/foss community. Nonetheless, I do think ArchWiki is the best version of that. It's not trying to convince you to use linux, it's a community knowledge share for people already using it. Unsurprisingly, it does tend to assume you're on arch, but out of the box arch is pretty barebones, so if something on there doesn't work for you, the hard part actually becomes figuring out what your distro has decided to configure differently. That is not something there is a singular resource for, to my knowledge. At that point it's just a matter of doing some detctive work and cross referencing different sources. And that can include asking questions here.
I dunno if I agree with this. Using windows and the office suite is taught in schools, at least in europe, and has been even when I was in school around 2 decades ago. Regardless of that, it is very user-friendly with intuitive simple UI and various wizards that guide you through every process step by step and generally speaking you dont have to do much, if any, manual configuration or tinkering if you dont want to.
I'm not saying linux should be the same and its obvious the priorities are different as you say, but I disagree that all OSes are about "detective work and figuring it out". I dont think bashing your head against the wall is a good way of learning anymore. I dont think even asking questions every time on various forums is a good solution since there is no guarantee you will get a correct answer, especially with linux - chances are much higher in my experience you will get an opinionated and possibly wrong or outdated answer.
I didn't make the claims you seem to think I made.
Your first paragraph is exactly in line with what I said: there is no "modern, widley accepted resource" for learning windows, because everyone around you already uses it, and msft has a financial incentive to make it user friendly.
And I didn't say "all OSes are about detective work and figuring it out", I said that trying to apply the ArchWiki to non-arch distros becomes detective work in figuring out how your distro differs, because afaik there isn't any other distro-agnostic resource that covers as much as ArchWiki.
What I did say was that Mac used to be just as foreign and incompatible to Windows users until Apple dumped a bunch of money into making it user friendly, and now there are people who know the apple ecosystem and nothing else.
To your last point, my anecdotal experience is that when I have a Linux issue, when I go searching around for a solution, about 80% of the time I end up finding the solution on the mint, ubuntu, manjaro, or some other Linux forum posted within the last couple of years, because chances are the issue was introduced recently.
For learning the terminal, Manpages.
Not sure what a command or program does, how it works, or how to use it? Just type in your terminal:
$ man {command}
And (usually) it will provide just about everything you need to know about it.
$ info {command}
although not available for all commands will often give texts that are more tutorial in nature. If you don't like the interface of info, you can use tkinfo instead.
linux4noobs
linux4noobs
Noob Friendly, Expert Enabling
Whether you're a seasoned pro or the noobiest of noobs, you've found the right place for Linux support and information. With a dedication to supporting free and open source software, this community aims to ensure Linux fits your needs and works for you. From troubleshooting to tutorials, practical tips, news and more, all aspects of Linux are warmly welcomed. Join a community of like-minded enthusiasts and professionals driving Linux's ongoing evolution.
Seeking Support?
- Mention your Linux distro and relevant system details.
- Describe what you've tried so far.
- Share your solution even if you found it yourself.
- Do not delete your post. This allows other people to see possible solutions if they have a similar problem.
- Properly format any scripts, code, logs, or error messages.
- Be mindful to omit any sensitive information such as usernames, passwords, IP addresses, etc.
Community Rules
- Keep discussions respectful and amiable. This community is a space where individuals may freely inquire, exchange thoughts, express viewpoints, and extend help without encountering belittlement. We were all a noob at one point. Differing opinions and ideas is a normal part of discourse, but it must remain civil. Offenders will be warned and/or removed.
- Posts must be Linux oriented
- Spam or affiliate links will not be tolerated.