コマンドを実行するための進行状況インジケータを提供することはLinuxの精神に違反しますか? [コピー]

コマンドを実行するための進行状況インジケータを提供することはLinuxの精神に違反しますか? [コピー]

重複の可能性:
cpにはなぜwgetのような進行状況バーがないのですか?

最近、私はLinuxでかなり大きなファイルを扱いました。私はこれらの大容量ファイルの内容を分割、分割、表示するために、、、、、などのsedコマンドを頻繁に使用します。私は通常、そのような作業が数秒、数時間、数日、またはcutsortuniqawkperlいいえ」。

Windows、Mac OSなどの他のプラットフォーム

上記のほとんどの例では、はいコマンドがファイルを正確に変更する方法を積極的に考えてから、ディスク出力の現在のサイズを確認して現在の進行状況を推測できます。あるいは、ディスクのファイルサイズの変化率を観察することもできます。しかし、このようなコマンドでは、sort -d -u big_file > output_file作業が1分で完了するのか、1年で完了するのかはわかりません。

この欠けている機能は意図的なものですか?これを行うLinuxの方法はありますか?通常、小さなファイルでこれらのニーズを削除できますか?

一つ本物haxorはファイルから直接値をスキャンして、これらの操作の進行状況を視覚的に理解しますか.pid

答え1

はい、これはUNIXの精神に違反しています。通常、Unixコマンドは成功時に出力を返さず、エラーが発生した場合にのみ出力を提供します。これは自動化を促進する。スクリプトは、コマンドのすべての出力をエラーレポートとして処理し、それをシステム管理者に記録したり、メールで送信したりできます。これがcronデーモンが動作する方法です。

Unixは、システム管理者がコンソールの上にマウスを置くことによって起こるすべてのことを観察するのではなく、自動化のために設計されています。

つまり、多くのユーティリティには、より多くの出力を提供するために同等の-verbose(または-vまたは--verbose)フラグがあります。たとえば、rsync には --progress フラグがあります。対話型セッションまたはスクリプトで使用されているかどうかを検出し、それに応じて出力を調整する他のツールがあります。 Wgetはインタラクティブセッション用の進捗インジケータとスクリプト用の進捗インジケータを提供しますが、完全にサイレントにすることができます。

また、いくつかのユーティリティ(例:バーデヴァPV)データ転送の経路として使用し、進捗状況を表示するように設計されています。必要に応じて追加してください。

答え2

pvあなたの友達です。進捗状況を確認したい場所に挿入してください。

良い

pv big_file | sort ...

関連情報