The Unix shell is widely despised as a modern programming language due to its arcane syntax, unpredictable control flow, and lack of support for fundamental constructs like: exception handling, objects, a module system, string functions, or even local variables! It's old. There are a billion implementations of the core language and userland utilities, each with subtle and incompatible differences. Documentation is too sparse or too dense or available only at your local library. It's a minefield.
But for all its perceived flaws, the Unix shell can be an amazingly productive environmentâ€”once you learn to hate it properly. It has super powers. Stuff you won't find in more general purpose languages. Learn to harness the shell's AWESOME POWER and you'll be able to quickly automate a wide range of tasks related to development workflow, source code editing, and systems administration/analysis.
In this talk, I want to show how to navigate the minefield, how to "think in shell," demystify the strange grammar (yes, there's an actual grammar in there), and compare approaches to common problems in shell vs. Ruby.