Unix Is Not an Acceptable Unix (2015)
<p><pre><code>    Unix permits programs to communicate with one another, and with the user, 
    exclusively through character streams. You can’t write a function that 
    returns a list of files because the shell doesn’t know what a “list” is, 
    doesn’t know what “files” are, and couldn’t tell you the difference between 
    a “function” and a “program” if its life depended on it. Programs don’t 
    “take arguments” and “return values”, they read characters from stdin and 
    print characters to stdout!
</code></pre>
And this is why I consider PowerShell a more Unix-y shell than bash. Powershell commands don&#x27;t just operate on character streams. They operate on CLR <i>objects</i>. For example, the PowerShell equivalent of grep, Select-String, doesn&#x27;t return a string, or even a list of strings. It returns a list of match objects, which contain the regexp used, the matching string, and the file that matched. PowerShell often gets dinged for its verbosity, but honestly, I find it much easier to compose PowerShell commands because I know exactly what each command does, and the command-line flags are mostly intuitive. Meanwhile, Unix commands are shorter, yes, but it&#x27;s a lot more difficult for me to remember, e.g. that if I want to run a command across a number of files, I have to pass the command to find.