This was a thread reply that got massive, and I thought it best to make it its own thread
Overall, I've found that the best method to learn Linux is by breaking stuff and then fixing it - no joke. Besides that, after you're familiar with basic concepts like package management (not on a specific distro, just the general concept), I would learn the shell (command line). I'm not saying learn a full shell programming language like Bash (though it is ridiculously useful) - just the basics. How running apps works (hint: $PATH), how you can choose the input and output of a program, how you can use grep in its most basic form to filter the output of a program, etc. Try using the command line in your daily work. Use your distro's CLI package manager, look for CLI alternatives to apps you use now, etc. It helps you understand how simple Linux is on a basic level, and I think most users with experience will agree that the shell can be far faster, more efficient, and flexible than GUI apps for a lot of things. Then (and during, most likely), dive into the file system. It seems crazy and nonsensical at first - trust me, I remember. There's quite a few guides scattered about, though, and it really is simple overall. Try to find where your log files are stored. Learn how to search through your system for stuff, including searching in files (hint: grep is very handy). Learn the 'man' manual command, and also appending --help to most apps will give options. File permissions are also important. Learn what is inside directories like /dev and /sys, and how they work. HAL and udev are big topics nowadays to look into.
If you run into problems with your distro during this time, remember these strategies: it will make for a lot faster time learning, and annoy far less people.
- Consult the documentation for an app that you're having trouble with. Man pages, info pages, the official web site, and your distro's documentation and possibly Wiki. tldp.org is also great for more advanced stuff. Docs from other distros may still be relevant, too.
- Google well. Adding "Linux" to a search will usually refine the results if you're getting generic stuff. Look in the text under a main link to see if a link's worth checking. Use quotes around phrases that must be exact (handy for error messages), and add a - in front of words that you keep finding in your searches that have nothing to do with what you want. For example, say I'm reading this and have never heard of the info pages mentioned above. Googling for info pages gets me tons of junk - ugh. A better search might be:
Linux "info pages" -yellow
Now we're looking for Linux stuff, the phrase "info pages" must be together and in that order, and we won't find stuff about the yellow pages. Great! Now we get quite a few relevant results. Make sure to check 2 or 3 pages of results before hitting up that forum - otherwise, someone else will likely end up doing the exact same thing, which is not necessary.
Also remember to search forums. Most forums allow similar tricks, and searching by post instead of by thread is an option usually which may help. You can even use Google on forums by putting
before or after your search terms.
- Ask questions well. On forums, if you did your homework as described above, but couldn't find a result (or couldn't understand it, and then make sure to be specific on where you found info and what you didn't understand), SAY SO! This will minimize RTFM responses, and people are much more eager to help someone who is ready to help themselves - I know I am. If you do get an RTFM-type response, be calm. If they were wrong about you, don't get pissed - staying calm will make them look like an elitist ass if they are, and they'll usually apologize and try to help if otherwise. When people give suggestions, reply to all of them. If people feel like their help is being ignored (even if it's wrong!) they will stop trying to help.
Okay, once you've learned the basics, you're ready to dive in. Distros good for really learning are Arch, Slackware, and Gentoo (I would avoid somewhat for this, though... they've had a lot of problems lately, and the documentation is a bit scattered right now. I think even the most hard-core Gentoo fan will agree.). Debian (minimal) and Sidux are also possibilities, but they tend to be less build-your-own and less standard than Arch and Slack. Linux from Scratch is not for users who have not somewhat mastered one of the above
Not that it's hard - you'll just end up typing in commands like a monkey and not learn much. Hey, I did the same thing, with the same result.
When installing and using a "hard" distro, question everything. Don't type commands blindly - find out what they do! Have fun with it! Use a virtual machine if you want, and don't be afraid to screw everything up. Trying to fix what you break teaches a lot.
Also, don't be conventional with your new hard distro. You could install KDE right off the discs with Slackware - instead, try installing package-by-package later, using error messages to figure out what you are missing. For those really wanting some desktop skillz, pass over DEs like KDE/Gnome/Xfce. Instead, use a window manager by itself, like Openbox. Extra points for breaking the mold with a tiling window manager! Set up this WM with all the functionality you want, manually.
Set goals for yourself. Try to achieve an install in under a certain amount of space. You might need to recompile some apps without certain features - okay, make some of your own packages for your distro! Make a completely encrypted system, or one with multiple different filesystems for stuff like /home, /boot, /var, etc. The possibilities are endless! :P