In this episode I dig in my heels and defend my position that you have to know command-line interfaces and shell scripting (or equivalent) in order to be a great programmer and a great generalist.
I didn't say it explicitly, but the bottom line is that sometimes you need to do custom batch (and/or streaming) tasks that are not handled by your IDE or your favorite tools. So what do you do? Scripting to the rescue.