&gt; <i>I was going to mention Unix “cat” but forgot.</i><p>&gt; <i>Wildly simple - it takes at most one argument.</i><p>That is asinine.  Why would a program be called ‘cat’ if it can’t con<i>cat</i>enate multiple files?<p>Also, his “grash” program is seriously deficient in the handling of signals – it completely ignores the issue.  There are <i>many</i> subtle issues with signals which have to be handled correctly when writing a shell: <a href="http:&#x2F;&#x2F;www.cons.org&#x2F;cracauer&#x2F;sigint.html" rel="nofollow">http:&#x2F;&#x2F;www.cons.org&#x2F;cracauer&#x2F;sigint.html</a>