文件处理工具

这里,文件处理表示复制,移动以及删除文件。稍后,我们将讨论更改文件属性(所有者、权限)的方法。

mkdir、touch:创建空的目录和文件

mkdir (创建目录(MaKe DIRectory))的作用是创建目录。其语法十分简单:

mkdir [选项] <目录> [目录 ...]

要注意其中的 -p 选项。它完成两件事:

  1. 它会创建原本不存在的上级目录。如果没有使用这个选项,mkdir 将会出错,并提示上级目录不存在。

  2. 如果您想要创建的目录已经存在,它将安静地返回。同样,如果没有使用 -p 选项,mkdir 会给出目录已经存在的错误提示。

例如:

  • mkdir foo:在当前目录创建一个叫 foo 的目录;

  • mkdir -p images/misc docs:在 images 目录里创建 misc 目录。如果 images 不存在的话,它会首先创建该目录(-p);同时,还会在当前目录创建叫做 docs 的目录。

起先,touch 不是用来创建文件而是用来更新文件的访问和修改时间的[3]。不过,如果文件不存在,touch 会创建相应的空文件。其语法为:

touch [选项] 文件 [文件...]

因次,下述命令:

touch file1 images/file2

将视这些文件是否事先存在,而在当前目录创建一个叫做 file1 的空文件,并在 images 目录创建空文件 file2

rm:删除文件或目录

rm 命令(删除(ReMove))是 DOSdeldeltree 命令的替代品,并增添了许多选项。其语法如下:

rm [选项] <文件|目录> [文件|目录...]

选项包括:

  • -r-R:递归删除。要删除目录,该选项是必需的,而不论其是否为空。不过您也可以用 rmdir 来删除空目录。

  • -i:要求在每个删除之前确认。请注意,为了安全 Mandrakelinux 在默认情况下,rmrm -i别名(同样的别名也用于 cpmv)。不过您可能有不同的喜好。要禁用它们,您可以通过创建空文件 ~/.alias 来禁用系统级别名。另外,您也可以编辑您的 ~/.bashrc 文件来禁用某些系统级别名。只要加上下述行: unalias rm cp mv

  • -f (与 -i 正相反):强制删除文件或目录,即使该用户没有对这些文件的写权限[4]

例如:

  • rm -i images/*.jpg file1:删除 images 目录中所有文件名以 .jpg 结尾的文件和当前目录中的 file1 文件,并要求对每个删除进行确认。确认时键入 y 表示同意删除,n 表示取消。

  • rm -Rf images/misc/ file*:删除 images/ 目录中的整个 misc/ 目录而不要求确认,同时也删除当前目录中所有文件名以 file 开头的文件。

[Warning]警告

使用 rm 删除的文件无法恢复!(不过,确实有一些方法可以恢复文件,不过那可很不简单。)请使用 -i 选项,以免您不小心删除了不该删除的文件。

mv:移动或重命名文件

mv (移动(MoVe))命令语法如下:

mv [选项] <文件|目录> [文件|目录 ...] <目的地>

一些选项:

  • -f:强制执行 ––覆盖已有文件前不警告。

  • -i:相反。在覆盖已有文件之前请求用户确认。

  • -v详细模式--报告所有更改和行动。

例如:

  • mv -i /tmp/pics/*.png .:将 /tmp/pics/ 目录中所有以 .png 结尾的文件移动到当前目录(.),如果当前目录存在同名文件则要求确认。

  • mv foo bar:将文件 foo 重命名为 bar。如果存在 bar 目录,则将 foo 文件或者整个 foo 目录(该目录本身及其所有子目录和所有其中的文件)移入 bar 目录。

  • mv -vf file* images/ trash/:不提示而将当前目录中的所有以 file 开头的文件和整个 images/ 目录移动到 trash/ 目录,并显示每一步操作。

cp:复制文件和目录

cp (复制(CoPy)) 同 DOS 下的 copyxcopy 相同,并增加了一些选项。其语法如下:

cp [选项] <文件|目录> [文件|目录 ...] <destination>

cp 有许多选项。在此仅列举最常用的几个:

  • -R:递归复制;对复制目录是必需的,即使只是一个空目录。

  • -i:覆盖文件之前要求确认。

  • -f:同 -i 相反,在覆盖文件之前毋需确认。

  • -v:详细模式,显示 cp 执行的每一步动作。

例如:

  • cp -i /timages/* images/:将 /timages/ 目录中的所有文件复制到当前目录中的 images/ 目录里。覆盖之前要求确认。

  • cp -vR docs/ /shared/mp3s/* mystuff/:将整个 docs 目录以及 /shared/mp3s 目录里所有文件复制到 mystuff 目录。

  • cp foo bar:在当前目录创建 foo 文件的副本 bar



[3] UNIX® 里,每个文件有三个不同的时间戳:文件最后访问日期(atime),即文件最后一次被打开阅读或更改的日期;inode 属性最后修改日期(mtime);以及文件内容最后被修改的时间(ctime)。

[4] 只要该用户对这个目录有写权限,他就能够删除其中的文件,即使他不是这些文件的所有者。