The way I learned, and still learning Linux is via programming. If you've or want to gain some programming experience you can follow the similar approach.
Grab a good *nix programming book. The book most often recommended is Advanced Programming in the UNIX(R) Environment (W. Stevens)
http://www.amazon.com/Programming-Environment-Addison-Wesley-Professional-Computing/dp/0201563177If the above book appears a bit lengthy for you then you can try "Advanced Linux programming" which I'm reading right now. It's freely available at the following URL
http://www.advancedlinuxprogramming.com/alp-folder Don't be fooled by its title though. It's a beginner book but covers all the necessary aspects of Linux programming in about 250-300 pages.
IMHO this 'programming approach' has multiple benefits over the 'learning the commands approach'.
a) You learn to program: Books like these get you out of the learning the syntax phase and helps you focus on building actual applications. Programming experience will be very useful if you ever want to get into reverse engineering or software exploitation.
b) You learn the 'OS': Instead of just focusing on the commands of an OS you learn how the OS implements these commands in general.
c) You learn the 'commands': Most of the Linux commands are nothing but wrappers on the Linux API. By actually learning the API you'll learn the commands easily. Also, instead of blindly running a command it helps you to understand what actually happens when a command is run.
d) You focus on Linux: Instead of pondering over various distributions you'll focus on Linux itself.
e) You'll retain the concepts (and commands

): By practicing the programs in the book - and creating your own - you'll retain the concepts for a much longer period than just reading just another *nix book.