It's great that everyone has come up with different ideas – no shortage of scope on this topic ! It has been a fantastic response with such enthusiasm and detail from everyone. It's great that people care to this extent !
But what do we mean by learning Linux ? Those two words suggest that we need to discover more.
The top level is deciding which is the best distribution for us. For social networking on a net-book or other small machine, Meego could well be the best. At the other end of a scale, someone with a whole campus of assorted equipment might go for Slackware, as it includes a kernel module for every device driver that exists.
Do we mean choosing the best application for each task ? We've all encountered web pages created by the publishing software of a well-known commercial operating system, running to hundreds of lines of code dealing solely with fonts. A human can create the same web page with 10 lines of code, and we'd be happy with a publishing tool getting near to the human's result. Word of mouth and suggestions in computer magazines can give us hints on the best applications.
Do we mean going directly to the web portals of individual applications, downloading and installing the packages, and tailoring any configuration files ? We get the latest features, with the caveat that the newest version might not fit in with the rest of our current distribution.
Or perhaps it is an understanding of how a distribution is made up ? We then discover that what we call Linux is indeed a Linux kernel, provided by a huge and dedicated group of people to whom we should be thankful, but there is also a whole mass of other software. There is a directory structure which traces back to the original Unix operating system of Bell Labs in the early 1970s. There are thousands of files and applications, some of which are, and always have been, fundamental to every Unix-like operating system. This is good because it gives us a predictability that those entities will be there on a Unix-like system when we want to use them. Our applications and our ideas have portability. On a current distribution, this is in no small part thanks to Richard Stallman and the GNU Organisation ( http://www.gnu.org
) , who over the decades have updated the packages and standardised the way that they compile and install.
I'm going to assume that the original poster was referring to this level of knowledge. As other posters have said, there is no instant way of learning how to work with it and how it all fits together, not least because it continually changes. I first used Unix in a factory in 1978, and will continually be learning about it for my remaining couple of decades on the planet.
One way which I don't think that has already been mentioned is to build your own system using the method described on the Linux From Scratch ( LFS ) website. If I'm allowed to quote web pages, it is http://www.linuxfromscratch.org
You start with an empty disk partition, follow the instructions, and two days later have a working Unix system. There is considerable explanation in the text, which includes use of shell scripting ( all fully explained ) with will build your knowledge in this area. With the creation of the LFS system, you then have the option to go on and create a final system to do whatever you want – a web server, an email server, desktop publishing, a PC multimedia system, a firewall, or any combination of those. This is in the Beyond Linux From Scratch ( BLFS ) system described on the same website. To create a BLFS system on top of the LFS one takes another two weeks, and ends up as a system comprising of what many people describe as Linux.
There is no getting away from it that building a LFS and BLFS system is hard work and a good deal of concentration, but it is a great way of advancing our knowledge of creating and controlling a system. It also gives confidence about researching into other aspects, such as configuring the kernel, creating web pages or using programming languages. If we like LFS and BLFS, we can stick with it, or can use an excellent distribution such as Linux Mint, armed with the knowledge of how it works.
Lastly it is important to communicate, to join with others in the same neighbourhood to work on Linux and for mutual help. In my time in the computer industry it was a great stimulus to work as a team. Someone working alone on the end of an internet connection can miss out on that.