OP, when you say "linux programming", do you mean learning c++ on a linux box? (you are afterall posting in a c++ forum so this is what i'd assume you were asking about). if so then i would follow Avilius's advice. Learning standard c++ is definitely what you should be doing. Don't worry yourself about platform-specific libraries yet.
OR, by "linux programming" did you mean scripting and familiarisation with the command line?
what do you mean Avilius?
I didn't clearly understand.
If you're still a beginner with the language, you should not worry about programming specifically for Linux systems. Learn the standard language itself.
Follow the tutorials on the site. The book that Grey Wolf linked isn't aimed at neophytes.
Maurice Bach, "The Design of the UNIX Operating System" 1986
Does help you understanding the concepts of all UNIX based system. Examples are written in C.
If you want to go further down the UNIX rabbit hole, you could install and use FreeBSD instead of Linux. I can bet that if you used FreeBSD at the console everyday for just 3 months, you will learn all you need to know about UNIX.
For what do you want to learn Linux OS? For System programming? If for only an application programming you need to practise in Qt, for example. I am using Linux Mint. Before installing Qt you need to run these commands on Ununtu:
sudo apt-get install build-essential
sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev -y