快乐的Linux命令行笔记-操作文件

第一天的笔记-基本的命令和使用方法

总结

今天主要学习了一些操作文件的命令, 包括创建文件夹, 复制, 删除, 查看文件和文件夹, 还有链接的一些知识, 包括硬链接和符号链接。

硬链接在文件被删掉之后也会留存源文件的数据, 符号链接不会。

硬链接和源文件的文件索引节点号是一样的, 符号链接不同。

每一个硬链接都关系到一个具体的包含文件内容的索引节点。


符号链接

如果以长格式查看文件列表, 会发现有可能有的文件有两个文件名

用处在于如果一个文件的文件名包含版本号, 那么这个文件如果更新了版本号, 文件名也需要跟着变, 引用这个文件的其他文件也需要跟着更新, 而这个特殊符号 -> 解决了这个问题。比如一个文件是这样的:

libc.so.6 -> libc-2.6.so

那么引用libc-2.6.so的文件只需要指向libc.so.6就可以了


操作文件

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

以上命令可以使用通配符来匹配需要操作的文件

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

普遍使用的字符类

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

接受文件名作为参数的任何命令, 都可以使用通配符

创建目录

1
$ mkdir newDirectory1 newDirectory2 newDirectory3

创建三个目录

复制文件和目录(cp命令)

1
2
$ cp item item1 # 复制item到item1
$ cp item item2 item1 # 复制item, item2到item1

如果需要复制一个目录, 那么一般情况下, 执行这行命令会出现如下提示

1
$ cp: omitting directory 'item'

这是因为即使是一个新文件夹, 里面也会有两个文件夹, ... , 代表当前文件夹和父文件夹, 而如果想复制一个文件夹, 包括其所有的文件的话, 那么需要加上 -r 选项, 表示递归其下面所有的文件都执行复制操作

cp 选项

选项 意义
-a –archive 复制文件和目录, 以及它们的属性, 包括所有权和权限。
通常, 副本具有用户所操作文件的默认属性
-i –interactive 在覆盖已存在文件之前, 提示用户确认
如果不指定该属性, cp命令会默认覆盖已存在文件
-r –recursive 递归的复制目录及目录中的内容。
当复制目录时, 通常需要该选项(或-a选项)
-u –update 当把文件从一个目录复制到另一个目录时,
仅复制目标目录中不存在的文件,
或者是文件内容新于目标目录中已经存在的文件。
-v –verbose 显示翔实的命令操作信息

移动和重命名文件(mv命令)

1
$ mv item item1 # 将 item 移动到 item1

mv选项

选项 意义
-i –interactive 和cp命令中选项意义相同。
但是需要注意, 因为是移动命令, 所以这个选项相当重要
-u –update 同上
-v –verbose 同上

删除文件和目录(rm命令)

1
$ rm item # 删除文件

rm选项

选项 意义
-i –interactive 再删除文件之前, 提示用户确认信息
如果不指定该文件, rm 会默默的删除文件
-r –recursive 递归删除目录, 如果要删除的是一个目录, 则必须指定该选项
-f –force 忽视不存在的文件, 不显示提示信息
该选项优先级高于 –interactive
-v –verbose 在执行 rm 命令时, 显示翔实的操作信息

因为Linux没有复原选项, 所以, 如果要使用通配符执行 rm 命令的话, 先使用 ls 命令来测试通配符都会匹配哪些文件, 然后使用向上箭头调用刚刚执行的命令, 然后使用 rm 来替换 ls


创建链接

1
2
$ ln file link # 创建硬链接
$ ln -s file link # 创建符号链接

硬链接

最初Unix创建链接的方式, 每创建一个硬链接, 就是为一个文件创建一个额外的目录项

  • 一个硬链接不能关联它所在的文件系统(磁盘分区)之外的文件
  • 不能关联目录

当使用 ls -l 命令时, 第二个字段显示的数据表示硬链接的数量, 每一个文件或文件夹都至少有一个硬链接。

当使用 ls -li 命令时, 第一个字段显示的数据表示文件索引节点号。

符号链接

用来突破硬链接的局限性, 类似于windows的快捷方式

如果往符号链接中写入文件, 指向的文件也会被写入相同的数据, 如果指向的文件被删除, 符号链接就不会被指向任何文件, 变成了一个坏连接。

使用 ls -l 查看符号链接, 第一个字段的首字母为l, 文件长度表示的是符号链接的字符串长度

使用相对路径要比使用绝对路径创建符号链接要好, 因为如果重命名了包含符号链接的文件夹会破环符号链接


快乐的Linux命令行笔记-操作文件
http://icecreamzhao.github.io/note/read_note/The_Linux_Command_Line/The-Linux-Command-Line-read-note-2Day.html
作者
littleboyDK
发布于
2018年11月21日
许可协议