ファイル名を使用するのではなく、標準ストリームを使用するとどうなりますか?

ファイル名を使用するのではなく、標準ストリームを使用するとどうなりますか?

このようなプログラムはmv引数として実際のファイル名が必要であることを知っていますが、このようなプログラムsortただ標準入力から読むそしてnames | sort > namesファイル名を使用する代わりに、標準出力に書き込み、次の-oオプションを指定してくださいsort names -o names

では、その理由は何ですか?

答え1

つまり、追加のプログラミングがほとんど必要なく、より柔軟性と使いやすさを備えたプログラムを提供します。だからなぜダメですか?

適切な方法で動作するほとんどのコアユーティリティには、この機能があります。私はPerlプログラマではありませんが、Diamond演算子も<>同じように動作すると思います。つまり、ファイルがコマンドラインにある場合はファイルから読み込み、それ以外の場合はstdinから読み込みます。 Larryがこの機能のコアユーティリティは、Perlスクリプトを使用してかなり簡単にエミュレートできると言ったことを覚えているようです。

さらに、このプログラムは複数のファイルを同時に処理して互いに区別できます。猫を使用すると、これを行うことはできません。名前がないと、インライン(sed -i)またはファイルベース()wcを区別するユーティリティを持つことはできません。また、よりきれいに見えます(IMO):sort file -o sortedまたは(btw、同じファイルを読み書きする場合はインラインcat file | sort > sortedsort <file >sorted正しく機能しません)。

関連情報