操作文件和目录

一些命令

  • cp 复制文件和目录
  • mv 移动/重命名文件和目录
  • mkdir 创建目录
  • rm 删除文件和目录
  • ln 创建硬链接和符号链接

这五个命令属于最常用的Linux命令之列,它们用来操作文件和目录。

通配符

通配符 意义
* 匹配任意多个字符(包括零个或一个)
? 匹配任意一个字符(不包括零个)
[characters] 匹配任意一个属于字符集中的字符
[!characters] 匹配任意一个不属于字符集中的字符
[[:class:]] 匹配任意一个属于指定字符类中的字符

表-1: 普遍使用的字符类

字符类 意义
[:alnum:] 匹配任意一个字母或数字
[:alpha:] 匹配任意一个字母
[:digit:] 匹配任意一个数字
[:lower:] 匹配任意一个小些字母
[:upper:] 匹配任意一个大写字母

借助通配符,为文件名构建非常复杂的选择标准成为可能, 接受文件名作为参数的任何命令,都可以使用通配符。

cp复制命令

命令 运行结果
cp file1 file2 复制文件file1内容到文件file2.如果file2已经存在,file2的内容会被file1的内容重写,如果file2不存在,则会创建file2
cp -i file1 file2 同上,但是执行之前会提示用户确认
cp file1 file2 dir1 复制file1和file2到目录dir1.目录dir1必须存在
cp dir1/* dir2 使用一个通配符,在目录dir1中的所有文件都被复制到dir2中。dir2必须已经存在

mv 移动和重命名文件

mv命令可以执行文件移动和文件命名任务,这依赖与你怎么使用它,任何一种情况下,完成操作后,原来的文件名不再存在。使用方法跟cp很像。

mv item1 item2

把文件或目录item1移动或重命名为item2

mv item... directory

把一个或多个条目从一个目录移动到另一个目录中

rm 删除文件和目录

rm file1 默默地删除文件

rm -i file1 删除文件之前,提示用户确认信息

rm -i file1 dir1 删除文件file1, 目录dir1, 以及dir1中的内容

注意: 类Unix的操作系统,比如说Linux,没有复原命令,一旦你用rm删除了一些东西,他就消失了,Linux假定你很聪明,你应该知道你在做什么。

ln 创建链接

ln命令既可以创建硬链接,也可以创建符号链接。

ln file link  // 创建一个硬链接

ln -s item link // 创建符号链接

硬链接

硬链接是最初Unix创建链接的方式,每个文件默认会有一个硬链接,这个硬链接给予文件名字。我们每创建一个硬链接,就为一个文件创建了一个额外的目录项。硬链接有两个重要的局限性:

  • 一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联于链接本身不在同一个磁盘分区上的文件
  • 一个硬链接不能关联一个目录

符号链接

创建符号链接是为了克服硬链接的局限性。符号链接生效,是通过创建一个特殊类型的文件,这个文件中包含一个关联文件或目录的文本指针。在这一方面,它们和windows的快捷方式差不多,当然,符号链接早于Windows的快捷方式很多年。

一个符号链接指向一个文件,而且这个符号链接本身与其它的符号链接几乎没有区别。 例如,如果你往一个符号链接里面写入东西,那么相关联的文件也被写入。然而, 当你删除一个符号链接时,只有这个链接被删除,而不是文件自身。如果先于符号链接 删除文件,这个链接仍然存在,但是不指向任何东西。在这种情况下,这个链接被称为 坏链接。在许多实现中,ls 命令会以不同的颜色展示坏链接,比如说红色,来显示它们 的存在。

拷贝的时候可以使用一个圆点来简化当前工作目录的写法

cp /etc/passwd . // 把etc目录下的passwd文件拷贝到当前目录

对于符号链接,有一点很重要,执行的大多数文件操作时针对的链接对象,而不是链接本身。而rm命令是个特例,当你删除链接的时候,删除的是链接本身,而不是链接的对象。