<story><title>Effective Shell</title><url>https://effective-shell.com/</url></story><parent_chain><item><author>woodruffw</author><text>For people who think that they&amp;#x27;re the intended audience of these kinds of guides: do you find them effective?&lt;p&gt;I learned how to use a POSIX shell years before I learned how to program (outside of a shell, that is), and I&amp;#x27;ve often wondered how to help people (particularly younger colleagues) who learned things the other way around.&lt;p&gt;My experience so far is that a lot of people get stuck in an &amp;quot;experience trough,&amp;quot; for lack of a better phrase: they&amp;#x27;re comfortable navigating around the filesystem and running basic commands, but struggle with some of the more powerful building blocks that can make someone a real shell power user (`xargs`, nontrivial uses of `find`, here-strings, subshells and blocks, process substitution, etc.).</text></item></parent_chain><comment><author>Izkata</author><text>The single biggest stumbling block I&amp;#x27;ve seen in my co-workers is quotes. Most of them think in terms of python&amp;#x2F;javascript&amp;#x2F;etc where quotes mean string type, and have no concept of how args and splitting on spaces works, or how it&amp;#x27;s all stringly-typed.&lt;p&gt;That &amp;quot;experience trough&amp;quot; you describe I think exists because they don&amp;#x27;t actually understand the fundamentals, so any time they&amp;#x27;ve attempted something new it&amp;#x27;s based on assumptions from a totally different paradigm, does something strange and unexpected, and reinforces sticking to the same safe and simple commands.</text></comment>
<story><title>Effective Shell</title><url>https://effective-shell.com/</url></story><parent_chain><item><author>woodruffw</author><text>For people who think that they&amp;#x27;re the intended audience of these kinds of guides: do you find them effective?&lt;p&gt;I learned how to use a POSIX shell years before I learned how to program (outside of a shell, that is), and I&amp;#x27;ve often wondered how to help people (particularly younger colleagues) who learned things the other way around.&lt;p&gt;My experience so far is that a lot of people get stuck in an &amp;quot;experience trough,&amp;quot; for lack of a better phrase: they&amp;#x27;re comfortable navigating around the filesystem and running basic commands, but struggle with some of the more powerful building blocks that can make someone a real shell power user (`xargs`, nontrivial uses of `find`, here-strings, subshells and blocks, process substitution, etc.).</text></item></parent_chain><comment><author>silisili</author><text>Yup.  I came the same path as you, and realized about the same.&lt;p&gt;It&amp;#x27;s just a different mindset.  Instead of a std library you have tons of prebuilt binaries ready to perform actions and talk to one another.  And that is really, really, powerful once you learn what&amp;#x27;s all available and how to use&amp;#x2F;abuse it.&lt;p&gt;Software engineering in general is so different.  Tons of mantras to follow, TDD, OOP, etc.&lt;p&gt;Each has its place, but generally if I can do it in a few lines of shell, why spend 20 minutes writing a hundred lines of something more pure?  On the other hand, shells do not seem well suited for anything large and complex, admittedly.  So watching people waste an hour writing something that could be a Bash one liner is about as painful as watching someone try to debug a 500 line bash script.</text></comment>