我们现在已经了解了一些创建文件的方法,但是假设我们希望复制文件、重命名文件、在文件系统层级结构中移动文件,甚至删除它们。我们使用三个简短的命令来实现这些目的。
cp 用于复制一个或多个文件或目录。您必须提供一个(或多个)源 名和一个目标 名。源名或目标名可能包含一个路径说明。如果目标是一个现有目录,那么所有源将被复制到目标中。如果目录是一个不存在的目录,那么(单一)源也必须为一个目录,并且源目录的副本及其内容使用目标名作为新名称。如果目标是一个文件,那么(单一)源必须也为文件,而源文件的副本使用目标名作为新名,替换任何现有的具有相同名称的文件。注意,在 DOS 和 Windows 操作系统中,不会做出目标为当前目录的默认假设。 mv 用于移动 或重命名 一个或多个文件或目录。一般来说,您使用的名称将遵守与 cp 相同的规则;您可以重命名某个文件或将一组文件移动到一个新目录中。由于名称只是一个链接到某个 inode 的目录条目,因此 inode 号只有在文件被移动到另一个文件系统才会发生更改就不足为怪了,在这种情况下,移动文件看上去就类似于在复制文件之后删除它。 rm 用于删除 一个或多个文件。我们后面将介绍如何删除目录。rename 命令在哪里?
如果您熟悉 DOS 或 Windows? 系统,您会发现使用 mv 重命名文件有点怪异。Linux 确实提供了 rename 命令,但是该命令与 DOS 和 Windows 下相同名称的命令具有不同的语法。查看手册页,了解该命令的使用详情。
清单 4 演示了 cp 和 mv 的使用,它们对我们的文本文件执行了一些备份复制。我们使用 ls -i 展示其中一些文件的 inode。
我们首先为 text1 文件生成一个副本 text1.bkp。 然后决定使用 mkdir 命令创建一个备份子目录 我们为文本 1 生成第二个备份副本,这一次是在备份目录中,并显示出所有三个文件都具有不同的 inode。 随后将 text1.bkp 移动到备份目录中,然后将其重命名,使其与第二个备份更加一致。我们本来可以使用一个单个命令完成这些操作,但是为了演示的目的,我们在这里使用了两个命令。 我们再次检查 inode,然后确定 inode 为 934193 的 text1.bkp 不再存在于 lpi103-2 目录,但是该 inode 仍然为备份目录中的 text1.bkp.1 保留下来。