为什么被删除的文件在Linux中仍然可写

为什么被删除的文件在Linux中仍然可写

我使用Linux有一段时间了,今天我发现了一件有趣的事情。

说我有一个无限的任务,不断将字符串写入文件。

在某个时刻,我删除了该文件,并在几秒钟内重新创建了该文件。令我惊讶的是,我不会丢失任何绳子。

以下是我使用 bash 脚本进行测试的方法:

#!/bin/bash

i=0
while :
do
    echo ${i}>>./target
    sleep 1
    i=$((i+1))
done

我执行这个脚本 4 秒钟,我可以得到一个文件名target,其中包含0123。然后我删除该文件target。我touch target在 5 秒内执行创建一个新文件。令我惊讶的是,在新文件中,我立即得到了内容4, 5, 6, 7, 。8

那么为什么我可以取回删除文件时生成的所有字符串呢?

答案1

因为touch target在这种情况下没有创建文件。 shell>>操作符附加到指定的文件,并在必要时创建。您删除“3”之后的文件,然后echo 4>>./target创建它。

删除文件后尝试列出该文件:

rm target; sleep 1; ls -l target

你会看到它被重新创建了。

相关内容