一人ができることを知っています。追加ファイル記述子の定義一時的な用途にのみ使用してください。しかし、一般的なCLIツールでサポートされている「stdmeta」ファイル記述子が実際に使用されていることを確認しました。このファイル記述子は次の行を出力します。データの一部ではありませんしかし、間違いではありません。 UnixやLinuxでこれらのアドインを提案する方法は?
1つの使用例は、psコマンドのヘッダを出力することです。
$ ps
PID TTY TIME CMD
6394 pts/15 00:00:00 bash
10294 pts/15 00:00:00 ps
10295 pts/15 00:00:00 bash
出力をソート、grep、またはフィルタリングするには、ヘッダーを失うか、データに混在させる必要があります。この問題は次のように解決できます。最初の行をstderrにリダイレクトするまたは多数の多様な創造的なソリューションしかし、明らかにこれらは不器用な一時的な痛みと覚えにくいソリューション専用のstdmetaファイル記述子がないためです。
別の例はの出力ですcurl
。カールメタデータをstderrにパイプこれにより、出力をパイピングできるアプリケーションに複雑さを追加することなく、人々に進捗状況を通知できます。今回も欠けているstdmetaを置き換えるためにstderrを使用しています。
に手紙を送らなければならないランカ・メレそして私の出来事を述べていますか?これにより、一部のUnixレガシーアプリケーションとの互換性が損なわれる可能性があるため、ケースをUnixy設定に移動する必要がありますか?
答え1
メタデータキャプチャの提案標準元十分に単純に見えてしまい、今表示される「実際の」データを使用できます。標準出力一貫した方法で。 (グリーンフィールドの状況では必ずしも悪い要件ではありません。)
実用的なレベルでは、プログラムは以下を処理するようにコード化されています。標準出力そして標準エラー。新しくしたいなら標準元通常、部分データを既存の記述子に送信すると、多くのことが簡単に壊れる可能性があります。ps -ef
同様の作業を行う従来のコードだけでなく、あなたの提案も考慮してくださいps -ef | sed 1d | ...
。これ以上ヘッダーを送信しない場合標準出力代わりにそれを押す標準元このコードは間違って動作します。
-q
私の考えでは、(静かな出力のために)すべてのユーティリティでフラグを使用できる方が良いと思います。しかし、ユーティリティが何を使用できるかを知っているほとんどすべてのスクリプトがそうでない以前の-q
バージョンを処理する必要があることを考えると、これさえ困難です。