交流群:692356620,有不同的问题或见解可以来群里讨论,或者私聊我
qq:1251611916
文件层级系统(FHS)
为什么要分区?
方便管理和使用 ,有利于数据安全
FHS
文件层级系统,所有Linux系统都要遵守
FHS下载:
https://www.pathname.com/fhs/pub/fhs-2.3.html
/ 根目录,可单独分区
/boot 引导系统启动的静态文件如内核(vmlinuz),initrd(initramfs),grub(bootloader)建议单独分区,基本分区
/dev 设备文件,不能单独分区
设备文件 关联至一个设备驱动程序,进而能够与之对应硬件设备进行通信
块设备 随机访问,数据块(比如硬盘)
字符设备 也叫线性设备,线性访问,按字符为单位(比如鼠标、显示器)
设备号 主设备号(major)和次设备号(minor)
主设备号标识设备类型
次设备号标识同一类型下的不同设备
设备文件只有元数据,没有数据
/etc 配置文件,特定于主机的系统配置
/home 普通用户的家目录,每一个用户的家目录默认为/home/username.建议单独分区
/root 管理员的家目录,不能单独分区
/lib 库文件
.a 静态库
.dll,.so 动态库
/lib/modules 内核模块文件
/media 挂载点目录,通常用来挂载移动设备
/mnt 挂载点目录,通常用来挂载额外的临时文件系统,比如另一块硬盘
opt 可选目录,早期通常用来安装第三方程序
/proc 伪文件系统,内核映射文件(伪文件系统实际上里面是没有任何内容的, 开机之后才映射上去的)。不能单独分区
/sys 伪文件系统,跟硬件设备相关的属性映射文件(伪文件系统实际上里面是没有 任何内容的,开机之后才映射上去的)。不能单独分区
/tmp 临时文件,/var/tmp
/var 可变化的文件,比如log、cache。存放日志信息、pid文件、lock文件,
建议单独分区
/bin 可执行文件,用户命令
/sbin 管理命令,存放很多oot用户才可以使用的命令
/usr shared,read-only,全局共享只读文件。提供操作系统核心功能,可以单独分区
/usr/bin
/usr/sbin
/usr/lib
/usr/local 第三方软件安装路径
/usr/local/bin
/usr/local/sbin
/usr/local/lib
/usr/local/etc
/usr/local/man
/etc,/bin,/sbin,/lib内是系统启动就需要用到的程序,这些目录不能挂载额外的分区,
必须在根文件系统的分区上
/usr/bin,/usr/sbin,/usr/lib提供操作系统核心功能,/usr可以单独分区
/usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/etc,
/usr/local/man等等在/usr/local目录下的内容都是第三方软件,建议单独分区
重定向与管道
重定向
1.系统设定:
默认输入设备 标准输入,STDIN,0(键盘)
默认输出设备 标准输出,STDOUT,1(显示器)
标准错误输出 STDERR,2,(显示器)
2.I/O重定向
> 覆盖重定向
>> 追加重定向
2> 重定向错误输出
2>> 追加重定向错误输出
&> 覆盖重定向标准输出或错误输出至同一个文件
&>> 追加重定向标准输出或错误输出至同一个文件
< 输入重定向
<< here Document
管道
从前一个命令的输出,当作后一个命令的输入,最后一个命令会在当前shell进程中的子进程中执行
tee
从标准输入读取数据,输出一份到屏幕上,一份保存到文件
[root@localhost ~]# echo 'hello '| tee /tmp/hello.out
hello
[root@localhost ~]# cat /tmp/hello.out
hello
查找
文本查找
文本查找 grep egrep fgrep
grep
根据模式搜索文本,并将符合模式的文本行显示出来。
使用基本正则表达式定义的模式来过滤文本的命令。
Pattern(模式) 文本字符和正则表达式的元字符组合而成的匹配条件
-i 忽略大小写
--color 匹配到的内容高亮显示
-v 显示没有被模式匹配到的行
-o 只显示被模式匹配到的字符串
-E 使用扩展正则表达式。grep -E相当于使用egrep
-q 静默模式,不输出任何信息
-A n 被模式匹配到的内容以及其后面n行的内容都显示出来
-B n 被模式匹配到的内容以及其前面n行的内容都显示出来
-C n 被模式匹配到的内容以及其前后的行各显示n行
文件查找
在文件系统上查找符合条件的文件
locate
语法:
locate KEYWORD
非实时,模糊匹配,查找是根据全系统文件数据库进行的,查找的速度快
依赖于事先构建的索引。索引的构建是在系统较为空闲时自动进行(周期性任务)
updatedb 手动生成文件数据库
索引构建过程需要遍历整个根文件系统,极消耗资源
find
实时查找,精确性强,遍历指定目录中所有文件完成查找, 查找速度慢,支持众多查找标准。
语法:find [OPTION…] 查找路径 查找标准 查找到以后的处理动作
查找路径 默认为当前目录
查找标准 默认为指定路径下的所有文件
-name ‘filename’ 对文件名作精确匹配.支持glob通配符机制
-iname ‘filename’ 文件名匹配时不区分大小写
-regex pattern 基于正则表达式进行文件名匹配.以pattern
匹配整个文件路径字符串,而不仅仅是文件名称
-user username 根本属主来查找
-group groupname 根据属组来查找
-uid 根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
-gid 根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
-nouser 查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
-nogroup 查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
-type 根据文件类型来查找(f,d,c,b,l,p,s)
-//普通文件(file)
d//目录文件
c//字符设备文件(character),一般为键盘
b//块设备文件(block),一般指硬盘
l//符号链接文件(symbolic link file)
p//命令管道(pipe)
s//套接字文件(socket)
-size 根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M,
+表示大于,-表示小于
[+|-]
#K、#M、#G
#Unit表示(从#-1到#之间的范围大小)
-#Unit表示(从0到#-1的范围大小)
+#Unit表示(大于#的所有)
-mtime 修改时间
-ctime 改变时间
-atime 访问时间
+5 5天前
-5 5天以内
-mmin 多少分钟修改过
-cmin 多少分钟改变过
-amin 多少分钟访问过
+5 5分钟前
-5 5分钟以内
-perm mode 根据权限精确查找
-perm -mode 文件权限能完全包含此mode时才符合条件
-perm /mode 9位权限中有任何一位权限匹配都视为符合查找条件
组合条件:
-a
-o
-not
!
例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
处理动作:默认为显示到屏幕上
-print 显示
-ls 类似ls -l的形式显示每一个文件的详细信息
-delete 删除查找到的文件
-fls /path/to/somefile 查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} ; 对查找到的每个文件执行COMMAND,每次操作都需要用户确认
-exec COMMAND {} ; 对查找到的每个文件执行COMMAND,操作不需要确认
注意:find传递查找到的文件至后面指定的命令时,查找到所有 \
符合条件的文件一次性传递给后面的命令,而有些命令不能接受过多参数, \
此时命令执行可能会失败。而xargs可规避此问题。
xargs 通过管道将查找到的内容给xargs处理,xargs后面直接跟命令即可