快乐的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 |
|
创建三个目录
复制文件和目录(cp命令)
1 |
|
如果需要复制一个目录, 那么一般情况下, 执行这行命令会出现如下提示
1 |
|
这是因为即使是一个新文件夹, 里面也会有两个文件夹, .
和 ..
, 代表当前文件夹和父文件夹, 而如果想复制一个文件夹, 包括其所有的文件的话, 那么需要加上 -r
选项, 表示递归其下面所有的文件都执行复制操作
cp 选项
选项 | 意义 |
---|---|
-a –archive | 复制文件和目录, 以及它们的属性, 包括所有权和权限。 通常, 副本具有用户所操作文件的默认属性 |
-i –interactive | 在覆盖已存在文件之前, 提示用户确认 如果不指定该属性, cp命令会默认覆盖已存在文件 |
-r –recursive | 递归的复制目录及目录中的内容。 当复制目录时, 通常需要该选项(或-a选项) |
-u –update | 当把文件从一个目录复制到另一个目录时, 仅复制目标目录中不存在的文件, 或者是文件内容新于目标目录中已经存在的文件。 |
-v –verbose | 显示翔实的命令操作信息 |
移动和重命名文件(mv命令)
1 |
|
mv选项
选项 | 意义 |
---|---|
-i –interactive | 和cp命令中选项意义相同。 但是需要注意, 因为是移动命令, 所以这个选项相当重要 |
-u –update | 同上 |
-v –verbose | 同上 |
删除文件和目录(rm命令)
1 |
|
rm选项
选项 | 意义 |
---|---|
-i –interactive | 再删除文件之前, 提示用户确认信息 如果不指定该文件, rm 会默默的删除文件 |
-r –recursive | 递归删除目录, 如果要删除的是一个目录, 则必须指定该选项 |
-f –force | 忽视不存在的文件, 不显示提示信息 该选项优先级高于 –interactive |
-v –verbose | 在执行 rm 命令时, 显示翔实的操作信息 |
因为Linux没有复原选项, 所以, 如果要使用通配符执行 rm 命令的话, 先使用 ls 命令来测试通配符都会匹配哪些文件, 然后使用向上箭头调用刚刚执行的命令, 然后使用 rm 来替换 ls
创建链接
1 |
|
硬链接
最初Unix创建链接的方式, 每创建一个硬链接, 就是为一个文件创建一个额外的目录项
- 一个硬链接不能关联它所在的文件系统(磁盘分区)之外的文件
- 不能关联目录
当使用 ls -l
命令时, 第二个字段显示的数据表示硬链接的数量, 每一个文件或文件夹都至少有一个硬链接。
当使用 ls -li
命令时, 第一个字段显示的数据表示文件索引节点号。
符号链接
用来突破硬链接的局限性, 类似于windows的快捷方式
如果往符号链接中写入文件, 指向的文件也会被写入相同的数据, 如果指向的文件被删除, 符号链接就不会被指向任何文件, 变成了一个坏连接。
使用 ls -l
查看符号链接, 第一个字段的首字母为l, 文件长度表示的是符号链接的字符串长度
使用相对路径要比使用绝对路径创建符号链接要好, 因为如果重命名了包含符号链接的文件夹会破环符号链接