Another / other ways I would suggest is ...
1) read man pages a lot - its definitive reading, if you can search for answer from good technical forums like unix.com or from SE but that is "learning on demand" and that might not help you to a greater extent, man pages, perldoc's will give near complete view
2) participate in technical forums like unix.com regularly - regularly I mean it
In the beginning you can watch for the questions, answers posted here. If you are in doubt about any post replied ask here, all the mods/admins are very good at explaining and very humble in taking time to explain this. Once you start watching regularly slowly you would start participating as well which will enable you to learn more and contribute more.
3) Is point 1 and 2 just theory? You have the right to ask.
I learned a lot just by participating in this forum regularly and learned to an extent but still as they, there are miles to go and better ways to approach a problem.
If other mods/admins here could post their experience, newbies would be greatly benefited