私はパイプを介して互いに(および他のツール)に接続する小さなツールセットを持つ「Unix Way」ツールバーを作成しています。
問題(私が興味を持っている理由の詳細については、以下を参照)は次のとおりです。 他の標準のUnixツールで簡単に書式設定および使用できるコマンドラインの表形式の出力に推奨される出力形式はありますか?
いくつかの背景:
私はコマンドラインでマジックデッキを管理して検索するツールセットを作成しています。私はこれらのツールをより集中的にし、それぞれ1つの作業のみを実行するよう努めています。
セット名をパラメータとして使用し、セット名に対してファジー検索を実行して、最良のものから最悪のものまで一致するリストを作成するmtg-identify-setというツールがあります。
「Theros」を検索すると、次のような結果が出ます。
- これ、「テロス」、100.00
- tths, "テロストークン", 63.15789473684200
- pths,"テロスプロモーション",63.15789473684200
- drk,"ダーク",57.14285714285700
- aer、「エーテル反乱」、52.63157894736800
そのため、大文字を無視してセットコード、セット名、一致率を出力します。
私は "cat -vが有害と見なされる"という方法でこれらのツールを書こうとしています(http://harmful.cat-v.org/cat-v/)、ツールを「単一操作」として維持するために、フォーマットパラメータなしで使用します。
しかし、これにより質問が生じます。出力は実際にどのようにコマンドラインに送信されるべきですか? Unixツール自体は非常に一貫性がなく、今日の実際のツールキットプログラムは完全に一貫性のない方法で非常に奇妙な結果を出力します。ほとんどは非常に一貫性のない独自の書式設定オプションを持っています。
タブ区切りの出力を試しましたが、「column」コマンドはすべてのスペースを同じように扱い、「タブ」を列に入れようとします。区切り文字にはシェルブラックマジックが必要なためです。おそらくあきらめてコンマを使用することもできますが、マジックのプレーンズウォーカーカード名にはコンマがあり、同様の問題が発生する可能性があります。パイプで区切られた形式はどんなものとも衝突しないことはほとんど保証されていますが、列を使用してコンテンツを出力しないと、人に馴染みのない形式になる可能性があります。
私は人間や機械に優しい出力のためのパイプライン計測の一種の実行を避けたいと思います。
最悪の場合は、すべてをJSONまたはテキストに適した他の形式で出力し、他のツールの出力を取得して必要に応じて形式を指定する書式設定ツールを提供できると思います。しかし、これは複雑さを重み付けるだけです。
おそらく答えは「ツールの一貫性を保ちなさい」でしょう。ただその道に行かなければならないかもしれませんね。しかし、実際には、コマンドラインツールの「推奨出力形式」のスタイルガイドがあればと思います。周りを見回したところ、Cat-v Thoughed Harmのウェブサイトにはツールが実行してはいけないことについて不満がありましたが、何をすべきかについては多くありませんでした。