Grep

grep:如果輸入文件也是輸出,那為什麼要清除輸入文件?

  • February 15, 2022

設想:

$ 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因此失去了內容。

引用自:https://unix.stackexchange.com/questions/690797