Specifically I'm a web developer that wants to setup databases, and servers, etc, but feels totally inept for someone who has been doing web development for so long.
1) start using Git and Github for all your projects. This will force you to get good at command line basics<p>2) Make your own dotfiles with shortcuts. Here's mine:<p><a href="http://github.com/dylanized/dotfiles" rel="nofollow">http://github.com/dylanized/dotfiles</a><p>3) Get a VPS server and set it up. This will require you to learn a little bit of everything - FTP, web server install, libraries, more. I'm doing this now, it's a bitch!<p>Here's a great VPS deal I found recently, I'm setting mine up now:<p><a href="http://slickdeals.net/f/5915440-StillGoing-ChicagoVPS-2048MB-RAM-50GB-Disk-2TB-Bandwidth-2x-IP-address-40or-30-year-4-Location-Choices" rel="nofollow">http://slickdeals.net/f/5915440-StillGoing-ChicagoVPS-2048MB...</a>
Cmmandline Fu[1] is a good place to start to see the possibilities; then, start forcing yourself to solve daily problems on the command line that you might either solve using a scripting language or solve by manual repetition.<p>Working on the command line is just like writing any other software. You have to think about what you are trying to do, and decide how you will accomplish it. As you think "what do I need to do next", Google is your friend for finding the obscure command to accomplish the task.<p>Repeat every working day until you aren't going to Google.<p>1. <a href="http://www.commandlinefu.com/commands/browse" rel="nofollow">http://www.commandlinefu.com/commands/browse</a>
I'm not sure about books, but I can offer a bit of advice.<p>Try and get a friend who is good at Linux. Standing over the shoulder and watching someone using Bash, vim, etc helps a lot. I share some tidbit of system usage almost daily with my roommate and its done wonders for me.