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

相关内容