http://www.debbie-iancu.com/learning-ubuntu-terminal/

Where can I learn Linux from ?
Hi. I’m a C++ programmer with years of Windows Experience under my belt. I’ve used Linux from time to time, for example I helped my Dad install Ubuntu, Debian, OpenSUSE, etc. But I really wanna become a Linux Guru. I wanna learn all the terminal commands, get a in depth understanding of how the kernel works.
Also, which Linux distro is the best for use as a desktop and for C++ programming?
Thanks in advance
If you want to learn all the terminal commands and so forth, the best distros to start with would be Debian or Slackware. I almost want to say Gentoo but I am not evil.
Both the ones I cited are a challenge for newbies. Slackware does not come with Gnome any more because the maintainers decided, before Mono it had become too bloated and uneconomical. You could use KDE or the XFCE desktop if you wanted to. Otherwise it is as close to a vanilla Linux as you can get and you can literally use jigdo to download and install Gnome if you must, or just do it directly. If you are a C++ programmer you should have the skills to cope with it though.
Books are a good idea, but you don’t even need them (or Linux itself) to learn Linux. In fact, if you want to try Debian you can download the Knoppix disk from:
http://www.knoppix.com
Knoppix is Debian. With a KDE desktop and as a live cd you do not have to install it on your computer (though you can. It installs as a vanilla Debian system). It’s a live cd. You have a complete operating system as soon as you boot up. It runs in memory but it is a complete desktop, which has everything you need. It also has great hardware recognition so you should be able to get up on the net quickly (especially if you have DSL: if you have a phone line provider make a note of the phone number and so forth before you boot up).
Now, the thing to understand is that Linux is just the kernel. Most operating system services are provided by the GNU Tools, which were written on Unix and provide the basis for several Unix-derived OSes such as GNU Hurd, Darwin, GNU Linux and FreeBSD.
That’s why the next step is to search for Unix tutorials. Here are a few:
http://www.ee.surrey.ac.uk/Teaching/Unix/
http://www.unixtools.com/tutorials.html
You should be able to open a terminal in EITHER Debian OR Slackware and do all the exercises they offer, starting with tar, cp and cd, going through shell scripts and all the way to sed and grep (which are painful, you are warned).
You can also go get yourself a shell account. Again, here is a list of UNIX account:
http://www.ixibo.com/2008/10/22/list-of-free-linuxunix-shell-account-providers/
That is relevant because some of them are Linux accounts. There are two in particular worth looking at:
http://www.polarhome.com/
http://www.zsuatt.com/
You won’t be able to connect to X-Windows but you can learn all the terminal commands on them, and maybe learn something about command-line compiling and make files with GCC.
One more thing. For good reason, many places prefer it when you connect to them using SSH rather than telnet. Windows still comes with a telnet client, but I still haven’t heard of an SSH one compatible with Unix/Linux systems. Except PuTTY. This is a third-party program. Download it from here:
http://www.chiark.greenend.org.uk/~sgtatham/putty/
And use that to connect with these accounts.
(any Unix account will be as good as any Linux account. I used to have one on grex.cyberspace.org and heartily recommend them).
Pimp my Laptop – Ubuntu 9.04 Minimalistic Setup