第六章 文件管理
-
文件:文件系统中储存数据的一个命名对象,它是用户眼中储存文件的最小单元。
目录:包含许多文件控制块项目的一类特殊文件,文件系统中每个文件都登记在一个或多个目录中
子目录:背包含在另一目录中的目录,除根目录外所有目录都是子目录,有父目录存在,目录的主要作用是和文件名构成路径。 -
Linux系统中所有文件都被组织成以根目录开始的倒置树状结构,文件系统按名访问
-
绝对路径:从根目录写起的文件或目录名
相对路径:相对于当前路径的文件或目录名 -
文件命名:
- 除了字符“/”之外,所有字符都可以使用
- 目录或文件名长度不能超过255个字符
- 文件或目录名区分大小写
- 文件拓展名对Linux系统没有含义
- 文件或目录名以“.”开始说隐藏文件
-
Linux硬件设备文件名称
硬件设备 文件名称 IDE设备 /dev/hd[a-d] SCIS/SATA/U盘 /dev/sd[a-p],a-p表示十六块不同的硬盘 软驱 /dev/fd[0-1] 打印机 /dev/lp[0-15] 光驱 /dev/cdrom 鼠标 /dev/mouse 磁带机 /sev/st0或/dev/ht0 -
文件是Linux处理信息的基本单位,所有文件都有两部分组成,数据项和文件控制块(引索节点)
引索节点(I节点):在文件系统结构中引索节点负责记录相应文件的控制信息,包括文件权限、大小等
数据:文件的实际内容,有自己的结构 -
文件分类:(无结构文件、有结构文件)
- 普通文件:最常见的文件,不包含文件系统的结构信息,按其内部结构可分为文本文件和二进制文件
- 目录文件:用于存放文件名及其相关信息的文件,它是内核组织文件系统的基本节点
- 链接文件:实际是指向真实文件的链接,类似于Windows的快捷方式,可细分为软链接和硬链接
- 设备文件:为外部设备提供一种标准接口的文件,可以帮助Linux适应不断发展的硬件,可分为块设备和字符设备
-
文件操作命令
-
cat命令
用来显示文本文件的内容,也可以把几个文件内容附加到另一个文件中,即连接、合并文件,全称是concatenate基本格式:
cat [选项] 文件名
或cat 文件1 文件2 > 文件3
-n:对输出的所有行进行编号
-b:对输出的所有非空行行进行编号
-s:当遇到连续两个2行以上的空白行时,就替换为一行的空白行
cat不论文件有多少内容都直接一次性显示
-
more命令
分页显示文本文件中的内容基本格式:
more [选项] 文件名
-c或-p:不滚屏,先清屏后再显示内容
-s:当遇到连续两个2行以上的空白行时,就替换为一行的空白行
+n:从第n行开始显示文本内容,n代表数字
-n:一次显示的行数,n代表数字
-
head命令
显示指定文件前若干行的内容基本格式:
head [选项] 文件名
-n k:这里的k表示行数,该选项用来显示文件前k行的内容,不设置默认十行
-c k:这里的k表示字节数,该选项用来显示文件前k个字节的内容
-v:显示文件名
-
tail命令
查看文末的数据-n k:这里的k表示行数,该选项用来显示文件最后k行的内容,不设置默认十行,可省略n
-c k:这里的k表示字节数,该选项用来显示文件最后k个字节的内容
-f:输出文件变化后新增加的数据,终止使用Ctrl+C
-
touch命令
创建文件修改文件时间参数Linux中每个文件拥有三个时间参数,可用stat命令查看
- 访问时间时间(atime):只要文件内容被读取,访问时间就会更新
- 数据修改时间(mtime):当文件内容发生变化,时间就会相应改变
- 状态修改时间(ctime):当文件状态发生改变,时间就会相应改变
基本格式:
touch [选项] 文件名
-a:只修改文件的访问时间
-c:修改文件时间参数(三个),如果文件不存在,则不建立新文件
-m:只修改文件的数据修改时间
-t:按欲修改时间,而不用当前时间,时间格式为YYYMMDDhhmm
touch可用只修改文件的访问时间和文件的数据修改时间,但是不能修改状态时间,因为状态时间会随之变化
-
grep命令
在一个或多个文件中,搜索某一特定的正则表达式,含有该表达式的行会被打印
正则表达式特殊字符含义:特殊字符 含义 c * 将匹配0(空白)个或多个字符c . 将匹配任何一个字符,且只能是一个字符 [xyz] 匹配方括号中的任意一个字符 [^xyz] 匹配除方括号以外的所有字符 ^ 行首定位符 $ 行尾定位符 基本格式:
grep [选项] 模式 文件名
-F:将查找模式解释为单独字符串
-E:将查找模式解释为正则表达式
-c:仅列出文件包含模式的行数
-i:忽略模式中的大小写
-n:在每一行最前面列出行号
-v:列出没有匹配模式的行
-
sed命令
自动编辑一个或多个文件,化简文件反复操作基本格式:
sed [选项] sed命令 文件名
-n:只显示匹配处理的行(否则会输出所有)
-e:执行多个编辑命令时使用(一般用;代替)
-i:直接在文件中进行修改而不是输出到显示器
-r:支持拓展正则表达式
sed常用编辑命令
p:打印匹配行
'2,3p'
d:删除指定行
a:在匹配行后追加
i:在匹配行前插入
c:整行替换
r:读取文件内容
w:将文本写入文件
s:字符串替换
's /字符串1/字符串2'
-
awk命令
格式化文本,对文本进行较复杂的格式处理它会自动给一行中的每个数据元素分配一个变量,在默认情况下:
$0:代表整行文本
$1:代表文本行中的第1个数据字段
$n:代表文本行中的第n个数据字段
awk的默认分隔符时空格,可以用-F自定义分隔符
基本格式:
awk [选项] '匹配规则{执行命令}'
执行多条命令时使用;分开
下面是两个使用过程中的例子BEGIN和END:
#BEGIN命令 cat file Line1 Line2 Line3 awk 'BEGIN {print"the file contents:"}>{print $0}' file the file content Line1 Line2 Line3 #END命令 awk 'BEGIN {print"the file contents:"}>{print $0}END{end of file}' file the file content Line1 Line2 Line3 end of file
-
cp命令
用来复制文件和目录基本格式:
cp [选项] 源文件 目标文件
-a:相当于-d、-p、-r选项的集合
-d:如果文件为软连接,则复制出的目标文件也为软连接,正常情况复制的是链接文件
-i:询问,如果目标文件已存在,则询问是否覆盖
-l:把目标文件建立为源文件的硬链接而不是复制文件
-s:把目标文件建立为源文件的软链接而不是复制文件
-p:复制后文件保留源文件的属性(所有者,组,权限,时间)
-r:递归复制,用于复制目录
-u:若目标文件与源文件有差异,则使用该选项可更新目标文件
-
rm命令
删除文件和目录基本格式:
rm [选项] 文件级或目录
-f:强制删除,系统将不在询问直接删除
-i:在删除前询问,给出提示信息
-r:递归删除,主要用于删除目录
-
mv命令
移动或重命名文件基本格式:
mv [选项] 源文件 目标文件
-f:强制覆盖,如果目标文件已存在,则不询问,直接强制覆盖
-i:交互移动,如果目标文件已存在,则询问是否覆盖
-n:如果目标文件已存在,则不会覆盖,也不会问用户
-v:显示文件或目录的移动过程
-u:若文件已存在,源文件更新,对目标文件进行升级
-
sort命令
排序命令,从首字符向后依次按照ASCII码值进行比较,最后将他们升序输出基本格式:
sort [选项] 文件名
-f:忽略大小写
-b:忽略每行的空白部分
-n:以数值型进行排序,默认使用字符串进行排序
-r:反向排序
-u:删除重复行,就是uniq
-t:指定分隔符,默认分隔符是制表符
-k [n,m]:按照指定的字段范围排序,从第n个字段开始到第m个字段结束
-
wc命令
统计命令基本格式:
wc [选项] 文件名
-l:只统计行数
-w:只统计单词数
-m:只统计字符数
-
-
目录操作命令
-
mkdir命令
用于创建新目录的命令基本格式:
mkdir [选项] 文件名
-m:用于手动配置所用权限,而不再使用默认权限
-p:递归创建所有目录
-
rmdir命令
用于删除空目录基本格式:
rmdir [选项] 文件名
-p:递归删除空目录
-
cd命令
切换工作目录,内部命令基本格式:
rmdir 相对路径或绝对路径
cd的特殊符号
特殊符号 作用 ~ 当前所登陆用户的主目录 - 代表上次所在目录 . 代表当前目录 … 代表上级目录 -
pwd命令
显示当前目录完整路径基本格式:
pwd
-
ls命令
显示当前目录下的内容基本格式:
ls [选项] 目录名称
-a:显示全部文件,包括隐藏文件
-A:显示全部文件,连同隐藏文件,但不包括".“和”…"这两个目录
-d:仅列出目录本身,而不列出目录内的文件数据
-f:直接列出文件,不进行排序
-F:在文件或目录后加上文件类型的指示符号"*“表示可运行文件,”/“表示目录,”=“表示socket文件,”|"表示FIFO文件
-h:以易读的方式显示文件目录或大小
-i:显示inod信息
-l:使用长格式列出文件和目录信息
-n:以UID和GID分别代替文件用户名和群组名显示出来
-r:将排序结果反向输出
-R:连同子目录一起列出来,即列出该目录下所有文件
-S:以文件容量大小排序
-t:以时间排序
-color=never:表示不依据文件特性基于颜色
-color=always:表示显示颜色,ls默认这种方式
-color=auto:表示让系统自行依据配置判断是否给予颜色
–full-time:以完整时间模式输出(包含年月日时分)
–time={atime,ctime}:输出访问时间或状态修改时间
-
ln命令
链接命令ext文件系统分为两大部分:索引信息(inode)和数据块信息(block)
索引信息(inode):默认大小128字节,用来记录文件的权限、所有者、属组、文件大小、状态修改时间、访问时间、数据修改时间、文件block编号,每个文件都有一个inode,不记录文件名
数据块信息(block):默认为4KB,储存满可占用多个block,可以分散也可以连续每个文件都独自占有一个inode文件内容有inode的记录来指向;如果向要读取文件内容,就必须借助目录中记录的文件找到该文件的inode,才能呢成功找到文件所在的block
硬链接:给一个inode分配多个文件名,通过任何一个文件名,都可以找到此文件的inode从而读取文件信息
软链接:类似于Windows的快捷方式,产生一个特殊文件来指向另一个文件
基本格式:
ln [选项] 源文件 目标文件
-s:创建软链接文件
不加-s:创建硬链接文件
硬链接的特点:
- 不论修改源文件还是链接文件,另一个的数据都会发生改变
- 不论删除源文件和链接文件,另一个都还可以被访问
- 硬链接不会新建新的inode信息,也不更改inode总数
- 硬链接不能跨文件系统建立,不同文件系统的inode是重新计算的
- 硬链接不能链接目录
软链接的特点:
- 修改源文件,链接文件数据都会发生改变
- 删除软链接,原文件不受影响,删除源文件,软链接显示文件不存在
- 软链接会创建自己的inode和block,但是block不储存实际数据,存储源文件的文件名和inode号
- 软链接可以链接目录
- 软链接可以跨分区
-
-
权限位
drwxr-x--- 4 root root 4096 Sep 24 00:07 -rw------- 1 root root 955 Sep 24 00:08 .bash_history
第一列:文件类型和不同用户的权限
第1个字符:
-:普通文件d:目录
l:链接文件
b:块设备文件
c:字符设备文件
第2、3、4个字符:所有者权限
第5、6、7个字符:所属组权限
第8、9、10个字符:其他人权限
(r:读,w:写,x:执行)
第二列:链接数该文件的硬链接个数
第三列:文件所有者
第四列:文件组
第五列:文件大小
第六列:文件修改时间
第七列:文件名或用户名
rwx权限对文件的作用
权限 对文件作用 r 可读取文件中的实际内容 w 可编辑、新增、修改文件内容;写权限不赋予用户删除的权力,除非用户对上级目录有写选项 x 文件被系统执行的权限 rwx权限对目录的作用
权限 对文件作用 r 可读取目录结构列表的权限 w 可删除、改名、移动等; x 用户可以进入目录 -
修改权限位的命令
-
chmod命令
基本格式1:
chmod 权限值 文件名
r=9,w=2,x=1,权限值为三者相加
-R:连同子目录权限一同修改
基本格式2:
chmod u/g/o/a +/-/= r/w/x 文件名
u所有者,g所属组,o其他用户
+添加权限,-删除权限,=设定权限
-
umask命令
umask默认值0022,第一个0代表文件特殊权限
文件初始权限=文件最大默认权限-umask权限
基本格式:
umask 遮掩权限值
-
chown命令
修改所有者命令
基本格式1:
chown 所有者 文件或目录
基本格式2:
chown 所有者:所属组 文件或目录
-R:连同子目录权限一同修改
-
chgrp命令
修改所属组命令
基本格式1:
chown 所属组 文件或目录
-