简介
常见的一些对文件和目录操作的命令如下:
- cp:复制文件和目录。
- mv:移动/重命名文件和目录。
- mkdir:创建目录。
- rm:删除文件和目录。
- ln:创建硬链接和符号链接。
用图形文件管理器来完成一些由这些命令执行的任务会更容易些。使用文 件管理器,我们可以把文件从一个目录拖放到另一个目录、剪贴和粘贴文件、删除文件等等。 那么,为什么还使用早期的命令行程序呢?
答案是命令行程序,功能强大灵活。虽然图形文件管理器能轻松地实现简单的文件操作,但是对于复杂的文件操作任务,则使用命令行程序比较容易完成。例如,怎样拷贝一个目录下所有的 HTML 文件——这些文件在目标目录不存在或者版本比目标目录的文件更新——到目标目录呢?要完成这个任务,使用文件管理器相当难,使用命令行相当容易,如下:
cp -u *.html destination
接下来进一步介绍通配符,以及各个命令的操作选项和实例。
通配符
shell 频繁地使用文件名,提供了特殊字符来帮助你快速指定一组文件名,这些特殊字符叫做通配符,使用通配符(也以文件名代换著称)允许你依据字符的组合模式来选择文件名。
通配符以及它们所选择的对象如下:
*
:匹配任意多个字符(包括零个或一个)。?
:匹配任意一个字符(不包括零个)。[characters]
:匹配任意一个属于字符集中的字符。[!characters]
:匹配任意一个不是字符集中的字符。
[[:class:]]
:匹配任意一个属于指定字符类中的字符。
最常使用的字符类:
[:alnum:]
:匹配任意一个字母或数字。[:alpha:]
:匹配任意一个字母。[:digit:]
:匹配任意一个数字。
[:lower:]
:匹配任意一个小写字母。[:upper:]
:匹配任意一个大写字母
借助通配符,为文件名构建非常复杂的选择标准成为可能,下面是一些示例:
*
:所有文件。g*
:文件名以“g”开头的文件。b*.txt
:以”b” 开头,中间有零个或任意多个字符,并以”.txt” 结尾 的文件。Data???
:以“Data”开头,其后紧接着 3 个字符的文件。[abc]*
:文件名以”a”,”b”, 或”c” 开头的文件backup.[0-9][0-9][0-9]
:以”backup.” 开头,并紧接着 3 个数字的文件[[:upper:]]*
:以大写字母开头的文件。[![:digit:]]*
:不以数字开头的文件。
[[:lower:]123]
:文件名以小写字母结尾,或以“1”,“2”,或“3”结尾的文件。
创建目录
mkdir 命令是用来创建目录的
mkdir directory ...
在描述一个命令时,当有三个圆点跟在一个命令的参数后面,这意味着那个参数可以重复。
mkdir 对应的实例:
mkdir dir1
:创建一个名为 “dir1” 的目录。mkdir dir1 dir2 dir3
:创建三个目录,名为 dir1, dir2, dir3。
复制文件和目录
cp 命令,复制文件或者目录,它有两种使用方法:
- 复制单个文件或目录 “item1” 到文件或目录”item2”。
cp item1 item2
- 复制多个项目(文件或目录)到一个目录下。
cp item1 item2 ... directory
cp 命令一些有用的选项:
-a/--archive
:复制文件和目录,以及它们的属性,包括所有权和权限。通常,副本具有用户所操作文件的默认属性。-i/--interactive
:在重写已存在文件之前,提示用户确认。如果这个选项不指定,cp 命令会默认重写文件。-r/--recursive
:递归地复制目录及目录中的内容。当复制目录时,需要这个 选项(或者-a 选项)。-u/--update
:当把文件从一个目录复制到另一个目录时,仅复制目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。-v/--verbose
:显示详细的命令操作信息。
cp 对应的实例:
cp file1 file2
:复制文件 file1 内容到文件 file2。如果 file2 已经存在,file2 的内容会被 file1 的内容重写。如果 file2 不存在,则会创建 file2。cp -i file1 file2
:这条命令和上面的命令一样,除了如果文件 file2 存在的话, 在文件 file2 被重写之前,会提示用户确认信息。cp file1 file2 dir1
:复制文件 file1 和文件 file2 到目录 dir1。目录 dir1 必须存在。cp dir1/* dir2
:使用一个通配符,在目录 dir1 中的所有文件都被复制到目 录 dir2 中。dir2 必须已经存在。cp -r dir1 dir2
:复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在, 创建目录dir2,操作完成后,目录 dir2 中的内容和 dir1 中 的一样。如果目录 dir2 存在,则目录 dir1 (和目录中的内容) 将会被复制到 dir2 中。
移动和重命名文件
mv 命令可以执行文件移动和文件命名任务,这依赖于你怎样使用它。任何一种情况下,完成操作之后,原来的文件名不再存在。mv 使用方法与 cp 很相像。
- 把文件或目录“item1”移动或重命名为“item2”。
mv item1 item2
- 把一个或多个条目从一个目录移动到另一个目录中。
mv item... directory
mv 与cp 命令共享了许多一样的选项:
-i/--interactive
:在重写已存在文件之前,提示用户确认。如果这个选项不指定,mv 命令会默认重写文件。
-u/--update
:当把文件从一个目录移动到另一个目录时,仅移动目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。-v/--verbose
:显示详细的命令操作信息。
mv 对应的实例:
mv file1 file2
:移动 file1 到 file2。如果 file2 存在,它的内容会被 file1 的 内容重写。如果 file2 不存在,则创建 file2。这两种情况下, file1 都不再存在。mv -i file1 file2
:除了如果 file2 存在的话,在 file2 被重写之前,用户会得到提示信息外,这个和上面的选项一样。mv file1 file2 dir1
:移动 file1 和 file2 到目录 dir1 中。dir1 必须已经存在。
mv dir1 dir2
:如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1 的内容到目录 dir2 中,同时删除目录 dir1。如果目录 dir2 存在,移动目录 dir1(及它的内容)到目录 dir2。
删除文件和目录
rm 命令用来移除(删除)文件和目录,“item” 代表一个或多个文件或目录
rm item...
普遍使用的 rm 选项如下:
-i/--interactive
:在删除已存在的文件前,提示用户确认信息。如果不指定这个选项,rm 会默默地删除文件。-r/--recursive
:递归地删除文件,这意味着,如果要删除一个目录,而此目录又包含子目录,那么子目录也会被删除。要删除一个目 录,必须指定这个选项。-f/--force
:忽视不存在的文件,不显示提示信息。这选项覆盖了“-- interactive”选项。
-v/--verbose
:显示详细的命令操作信息。
rm 对应的实例:
rm file1
:默默地删除文件。rm -i file1
:除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。rm -r file1 dir1
:删除文件 file1, 目录 dir1,及 dir1 中的内容。
rm -rf file1 dir1
:同上,除了如果文件 file1,或目录 dir1 不存在的话,rm 仍会继续执行。
创建链接
ln 命令既可创建硬链接,也可以创建符号链接。
创建硬链接,一个硬链接和文件本身没有什么区别。
ln file link
硬链接有两个重要局限性:
- 一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联与链接本身不在同一个磁盘分区上的文件。
- 一个硬链接不能关联一个目录。
创建符号链接,“item” 可以是一个文件或是一个目录。
ln -s item link
建立符号链接的目的是为了克服硬链接的两个缺点:硬链接不能跨越物理设备,硬链接不能关 联目录,只能是文件。符号链接是文件的特殊类型,它包含一个指向目标文件或目录的文本指针。
总结
操作文件和目录命令有多个,不过都是基本的单词缩写,大家可以随意通过添加文件和目录来拓展练习,也可以使用通配符来为各种各样的操作命令指定文件,这样才能够良好地理解基本文件操作命令和通配符,也能提高我们处理文件的效率。