開いたファイルと開いたSTDINの違い、各[重複]を使用する場合

開いたファイルと開いたSTDINの違い、各[重複]を使用する場合

ほとんどのコマンドに関する多くの回答で、STDINで使用されているなどのtext-processingコマンドを表示し、単にファイルを開くことができます。sedawkgrep

例えば

$ sed -e 's|foo|bar|g' file # open file
$ sed -e 's|foo|bar|g' <file # open STDIN

または

$ grep 'PATTERN' file # open file
$ grep 'PATTERN' <file # open STDIN

個人的にファイルを開く方法を常に使用していますが、いつ使用して使用しないか、そして違いが何であるかを知りたいです。

ベストアンサー1

それはニーズに依存します。この場合、標準入力のファイル名またはパイプを使用すると違いがあります。

bash-4.1$ cat /etc/passwd /etc/group | wc -l
128
bash-4.1$ wc -l /etc/passwd /etc/group
  49 /etc/passwd
  79 /etc/group
 128 total
bash-4.1$ 

さらに、標準入力はあまりlseek(3)強力ではない傾向があるため、アプリケーションに照会できるファイル記述子が必要な場合(最初に巻き戻すなど)、標準入力を使用できない可能性があります。

おすすめ記事