![当文件被移动时,它们是否存储在内存中?](https://linux22.com/image/9040/%E5%BD%93%E6%96%87%E4%BB%B6%E8%A2%AB%E7%A7%BB%E5%8A%A8%E6%97%B6%EF%BC%8C%E5%AE%83%E4%BB%AC%E6%98%AF%E5%90%A6%E5%AD%98%E5%82%A8%E5%9C%A8%E5%86%85%E5%AD%98%E4%B8%AD%EF%BC%9F.png)
当我使用命令移动文件时mv
,是否首先读取该文件,将其完全缓存到内存中,然后另存为另一个文件?还是和写作一样
while read line; do
echo "$line" >> output_file
done < input_file
与 类似cp
。将一个文件复制到另一个文件时,是否先将文件完全缓存到内存中,然后再进行复制?
答案1
通常 amv
更接近于重命名而不是副本。在经典的 UNIX 类型文件系统中,如果源和目标位于同一安装点,则不会复制包含文件数据的 inode。相反,会创建一个指向相同 inode 的新文件名,并且旧文件名将被取消链接。
如果mv
是另一个安装点,那么它将是一个实际的副本。一次在 RAM 中的比例是操作系统细节,其对用户的透明度没有定义。
仅举一个例子,如果认为数据实际上已复制到新位置,则对于用户来说,该文件在概念上可能会“写入”磁盘。但在操作系统级别,它实际上可能驻留在尚未刷新到硬件的缓冲区中。