複雑なシェルコマンドがAWKを使用したテキスト出力の解析を伴う場合、常に厄介なことに気づきました。基本的に、構造化データをテキストに変換し、テキストを再度解析して構造化データに戻ります。
PowerShellはWindowsシェルであり、テキストだけでなくシェルコマンド間で型指定されたオブジェクトをパイプできるようにすることで、この問題を回避します。
PowerShellのような、テキストベースではなくオブジェクトベースのUnixシェルはありますか?
複雑なシェルコマンドがAWKを使用したテキスト出力の解析を伴う場合、常に厄介なことに気づきました。基本的に、構造化データをテキストに変換し、テキストを再度解析して構造化データに戻ります。
PowerShellはWindowsシェルであり、テキストだけでなくシェルコマンド間で型指定されたオブジェクトをパイプできるようにすることで、この問題を回避します。
PowerShellのような、テキストベースではなくオブジェクトベースのUnixシェルはありますか?
回答:
いいえ、それは逆です。spoon ^ H ^ H ^ H構造化データはありません。テキストのみがあります。
Unixの哲学の大部分は、テキストを出力し、入力としてテキストを受け入れるという考え方に基づいています。これについての良い説明がある「The Unix Art of Unix Programming」を読むことを検討したいかもしれません。
誤解しないでください。私はあなたの主張を理解しており、あなたが何を得ようとしているのかを知っています。RubyやPythonのインタラクティブインタープリターなど、シェルとして使用できるものがありますが、Bashほど基本的なタスクに適していません。たとえば、ディレクトリを変更してみてください。
また、シェルでオブジェクトを使用することは、それだけではありません。シェルのみがこれをサポートしている場合、Unixでは、あなたは途方に暮れるでしょう。grep、awk、sedなど、標準のUnixテキスト操作ツールはすべて変更する必要があります。
数年前にこのようなものを作成する試みがあったと思いますが、名前を思い出すことができず、長い間聞いたこともありません。おそらく離陸しないでしょう。
ls(1)。完全に役に立たない。
PowerShellの実装(Monoの上に)を目的としたPashと呼ばれるプロジェクトが実際にありますが、停止しているようです。
大半のインタープリター(またはコンパイル済み)スクリプトを記述し、インタープリターのシェル内でそれらを呼び出すことにより、そのほとんどを達成できると思います。
これは、少なくともRuby、Perl、Python、Haskell(例、GHCi)、JavaScript(例、node.js)、Matlab、およびその他の言語で実行できます...
3年後の別の考え:XMLまたはJSONのいずれかを使用して、テキストストリームでオブジェクトを表すことが可能です。私はJSON(よりシンプル)を好みます。実際、古典的な* NIXユーティリティJSONサポートを提供するプロジェクトがあります。例:https : //github.com/step-/JSON.awk
AWKなどの従来の* NIXプログラムにオブジェクト型モデルを使用する場合の問題の1つは、オブジェクト指向モデルが実際にOOサポートを持たないことです。たとえば、AWKには連想配列がありますが、配列は多次元ではありません(AWK配列の各要素は数字または文字列である必要があります。配列はAWKの配列オブジェクトにすることはできません)。