linux-文件操作
在 Linux 系统中,文件操作与管理是日常使用和系统管理的重要组成部分。下面将详细介绍文件的复制、移动、链接创建,以及文件查找、文本处理、排序、权限管理等相关知识。
一、文件的复制
在 Linux 里,cp
命令可用于复制文件或目录,生成其副本。其语法结构为:cp [选项] 源文件或目录 目标文件或目录
。以下是一些常用选项:
-r
:递归复制整个目录及其子目录。若要复制一个包含子目录的文件夹,就需要使用该选项。-i
:在覆盖目标文件之前会提醒用户,避免误操作覆盖重要文件。-f
:强制复制,会忽略错误继续复制,即便遇到一些小问题也会尽力完成复制操作。
二、文件的移动
mv
命令用于移动文件或目录,语法结构为:mv [选项] 源文件或目录 目标文件或目录
。常用选项 -i
为交互式操作,当目标文件存在时,会提醒用户是否覆盖。
此外,mv
还有其他使用方式。可以使用 mv [多个]文件 目录
,如果文件不在目标目录中,就会被移入该文件夹;也能使用 mv [多个]目录 目标目录
,实现目录的移动。
三、创建链接文件
ln
命令可以为文件创建链接文件,它不会生成副本,而是与原文件相关联。其语法结构是:ln [选项] 源文件 目标文件
。常用选项 -s
用于创建软链接文件。
硬链接与软链接的区别
- 硬链接:链接文件和源文件具有相同的索引号,链接让它们有不同的名称。硬链接不能跨文件系统,并且不能为目录创建硬链接。
- 软链接:只是指向另一个文件名,包含的是另外一个文件的路径名的文本指针。软链接可以跨文件系统,也可以为目录创建软链接。
目录的链接方面,子目录数一开始创建默认是 2(.
和 ..
)。可以通过 ls -dl
来展示详细的信息,-d
选项能让目录像文件一样显示。
文件名替换功能
在 Linux 中,可以使用特定字符去匹配字符(正则表达式):
?
:匹配单个字符。*
:匹配 0 到 n 个字符。[字符列表]
:匹配文件名中任意在字符列表中的字符。[!字符列表]
:匹配文件名中任意不在字符列表中的字符。
系统会先处理通配符,再去匹配(文件名扩展),命令本身并不知道通配符的存在。
四、文件查找和文本处理
查找文件
find
命令可在层次目录中根据文件名或文件属性名去定位文件,还能对定位的文件执行删除、打印等操作。其语法格式为:find [目录] [条件] [动作]
。例如,find ./ -name filea -print
会在当前目录中通过名字查找 filea
,找到后将其打印出来。
常见选项
-name
:根据文件名查找,使用时可以结合通配符,但要使用双引号包起来。-type
:根据文件类型查找,常见的文件类型有b
(块设备)、c
(字符特殊设备)、d
(目录文件)、f
(普通文件)。- 可以使用操作符实现多个条件的查找:
-a
:与操作(默认)。-o
:或操作。!
:非操作。()
:逻辑组,指定哪些条件优先评估。
-size +-n
:根据文件大小(块)查找。-mtime +-n
:根据最后修改的时间(天)查找。
常见动作
-exec 命令名 {} \;
:把找到的文件当做参数去执行新的命令。-ok 命令名 {} \;
:同上,但为交互式操作,执行前会询问用户是否继续。
也可以使用+
去替换\;
。
文本查找
grep
命令用于在一个或多个文件中查找满足特定格式的行。其语法格式为:grep [选项] 搜索的字符串 文件名
,输出的是包含搜索字符串的行。
常见选项
-i
:忽略大小写。-n
:显示匹配的行号。-v
:显示不匹配的行。-w
:匹配整个字符串。-c
:显示匹配行的数量。-r
:递归搜索。
字段提取
cut
命令可从文件中取出指定的字段或列,语法格式为:cut 选项 文件
。
常见选项
-b
:指定字节,如1,3,5
或1 - 3,5
。-c
:指定字符,如1 - 4
表示输出第一个到第四个字符。-d
:指定分隔符,默认是制表符。如果分隔符有特殊意义或为空格,需要用双引号括起来,例如cut -d " " -f 1 phones
。-f
:指定字段的位置。
cut
命令的输出会显示在标准输出中。
文件排序
sort
命令用于对文件进行排序,语法格式为:sort [选项] 文件
。
常见选项
-n
:以数值来排序,包含负数和小数。-r
:逆序排序。-o
:输出到指定的文件。-k
:指定排序的依据字段,如1,2
表示先用第一个字段排序,若相同再用第二个字段排序。
五、文件权限管理
文件权限的含义
文件
- 读(
r
):可以读取文件内容。 - 写(
w
):可以修改文件内容,也能删除文件。 - 执行(
x
):可以将文件作为程序文件执行。
目录
- 读(
r
):可以列出目录内容。 - 写(
w
):可以在目录内部创建、删除、重命名文件和子目录。 - 执行(
x
):可以进入该目录。
umask 掩码
umask
掩码用于设置哪些权限不会被赋予新文件。文件的默认权限是 666,目录的默认权限是 777。例如,umask 022
会将初始权限设置为 777 - 022
(目录)和 666 - 022
(文件)。如果 umask
是 4 位,第一位表示特殊权限。
修改权限
chmod
命令用于修改文件权限,有两种方式:
- 字符串方式:字符串包括三个部分,
u
(用户)、g
(组)、o
(其他)、a
(所有);+
、-
、=
;r
、w
、x
或-
。例如,chmod u+x file
表示给文件的所有者添加执行权限。 - 三位八进制方式:例如,
chmod 755 file
。
六、Linux 文件组织方式
Linux 基于索引节点来组织文件,索引节点的最大数量在初始化的时候就确定了。删除一个文件会释放其占用的索引节点。目录包含索引节点号,通过索引节点号可以找到对应的索引节点,而索引节点指向文件的数据。