Grep
grep:如果輸入文件也是輸出,那為什麼要清除輸入文件?
設想:
$ cat t0.txt xxx $ grep xxx t0.txt > t0.txt grep: t0.txt: input file is also the output # exit status 2 $ cat t0.txt <nothing>
問題:如果輸入文件也是輸出並且存在狀態是
2
(發生錯誤),那麼為什麼要清除輸入文件?
shell 重定向首先發生;所以首先shell清空你的輸出文件
t0.txt
然後它傳遞給grep
然後grep
抱怨輸入和輸出是相同的;grep 如何知道它們是相同的(?),因為它檢查inode
輸入和輸出文件的編號(請參閱此處的原始碼/第 1377~1403 行)。不幸的是,您
t0.txt
因此失去了內容。