Bash - ファイルにリダイレクト(バグ)しますか? [コピー]

Bash - ファイルにリダイレクト(バグ)しますか? [コピー]

この例を見ると混乱しています。

[ziga@brane ~]$ touch test.txt
[ziga@brane ~]$ echo "TEST" > test.txt
[ziga@brane ~]$ cat test.txt
TEST
[ziga@brane ~]$ cat test.txt | grep "TEST"
TEST
[ziga@brane ~]$ cat test.txt | grep "TEST" > test.txt
[ziga@brane ~]$ cat test.txt
[ziga@brane ~]$

cat test.txt | grep "TEST" > test.txtファイルの内容を削除する理由は何ですかtest.txt>書き直して追加するようです>>!私は何を見逃していますか?

答え1

リダイレクトが最初に発生するため、>test.txt最初にファイルがcat test.txt切り捨てられ、次に何も読み取られずに渡されないため、一致する| grep "TEST"ものはなく、最後に開かれたファイルには何も記録されません。test.txt

関連情報