A recent LWN thread had a discussion on PowerSheel compared to the Unix traditional shell, among other very interesting comments about the general deficiencies of a typical Free Software system (missing tools, programs rewritten before ever getting finished, lack of user interfaces study and misguided usability efforts, others).
Two of the main conclusions from this part of the discussion:
1. Shell scripting tends to break on anything other than the simplest cases, a structured approach, using objects instead of text really has some value. Try to process a file with spaces in the name, non-latin characters or some unusual naming and bang, without extra care you’re dead. My experience perfectly confirms this: I’ve never got too far with scripting because I found Python. Whenever I need something more complicated than a one liner (ex. recursive directory traversal) I’ll do it in Python. With bash I’ll keep reading manuals to see why that particular case is failing, or how do you echo something to bc to do some floating point arithmetic, or how to parse a string to get 15th word from the output of some particular version of some utility. Obviously, my Python doesn’t include all the functionality in the world, because otherwise Python would simply replace the shells and the Unix utilities.
2. The Unix utilities are very inconsistent among themselves; this is harder to describe, but I’ve got bitten for sure a lot of times.
The original comment was actually referring to how you can access .Net functionality from PowerShell, besides the other goodness, and the entire phrase is:
„Consider that PowerShell can use any .Net library from the command line: the analog is that you could name a .so file on your Linux terminal to load it, and afterwards call the functions in there, and have it all work. I am starting to suspect that Unix culture is so far behind the state of the art that we don’t even realize it.”