Grepping、awking、sedding、およびパイプラインはコマンドラインまたはシェルスクリプト(通称フィルターこれから)。
デフォルトでは、「標準」Unix CLIプログラムとシェルが組み込まれています。注文するこれから)フィルタが正しく機能するためには、各フィルタステップで正確に予想されるstdin、stdout、およびstderrの形式が必要です。以下では、一部のコマンドの正確な予測形式を、そのコマンドのAPIと呼びます。
Web開発の背景を持つ人として、私はこの種のデータ収集とデータ処理を技術的に関連付けます。Webスクレイピング- この技術は、データ表現に若干の変化があるたびに非常に不安定です。
現在の問題は Unix コマンド API の安定性に関連しています。
- Unixファミリーオペレーティングシステムのコマンドは、入力と出力の公式標準化に従いますか?
- 歴史的にいくつかの重要なコマンドを更新すると、そのコマンドの以前のバージョンで構築されたいくつかのフィルタの機能が中断されたことがありますか?
- Unixコマンドは時間が経つにつれて成熟し、いくつかのフィルタを破ることができるようにコマンドを変更することは決して不可能になりましたか?
- コマンドAPIの変更によってフィルタが壊れる可能性がある場合、開発者としてこの問題からフィルタを保護するにはどうすればよいですか?
ベストアンサー1
POSIX 2008規格には、説明するセクションがあります。「シェルとユーティリティ」。一般的に言って、これに従うならば、スクリプトはサポートの中断の可能性を除いてかなり未来志向でなければなりませんが、これが一日の朝に発生することはほとんどないので、スクリプトを更新するのに十分な時間が必要です。
単一ユーティリティの出力形式がプラットフォームとバージョンによって大きく異なる場合、POSIX標準には、保証された予測可能な出力形式を指定する一般的または-p
呼ばれるオプションを含めることができます。-P
これの例は次のとおりです。time
便利、実装は非常に多様です。安定したAPI /出力フォーマットが必要な場合time -p
。
POSIX標準で扱われていないフィルタユーティリティを使用する必要がある場合は、Webスクレイピングを実行するときにリモートWeb開発者の手にかかっているかのように、デプロイパッケージャ/アップストリーム開発者の手にほとんど依存します。