Linux基础知识、命令完整总结(三)文件、用户、正则

本文详细介绍了Linux系统中的文件类型、查找方法(如find命令)、文件打包压缩技术、用户管理(包括UID、用户分类、权限与组管理),以及正则表达式的概念和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十五、文件类型、查找、打包压缩

0. 文件系统

1)文件系统

  • 目录项:文件名指向inode
  • inode表:inode指向数据块
  • 数据块block

查看文件系统

查看inode:df -i

查看block:df -h

创建虚拟文件系统

dd if=/dev/sda of=/dev/sdb bs=612 count=10240

来源 生成文件系统 block大小 快个数

在这里插入图片描述
在这里插入图片描述

2)格式化原理

  • 创建文件系统后:划分inode、block
    • inode(存储block数据的信息)除文件名
      • inode编号
      • 属主
      • 属组
      • 类型
      • 权限
      • 时间
      • 大小
      • 文件真正内容的指针
    • block(存储数据)

inode:用来记录文件属性和指针
inode位图:用来记录哪个空
block位图:用来记录哪个空

3)命令的底层原理

  • 硬链接:多个文件名对应一个inode

    • 特点:无法跨文件系统,不可以引用目录、不存在文件,删除硬链接文件不影响其他相同inode号的文件
  • 软链接:本身是一个文件,存储了目标文件的完整路径

    • 特点:可以跨文件系统、引用目录、引用不存在的文件
  • cp:分配一个空闲的inode号,在inode表中生成新条目,在目录中创建一个目录项,将名称与inode编号关联,拷贝数据生成新的文件。

  • rm:数据链接数递减,从而释放inode号,并且inode号可以被重用,把数据块放在空闲列表中,删除目录项,数据实际上不会马上被删除,但当另一个文件使用数据块时将被会被覆盖

  • mv:

    • 同一分区:用新的文件名创建对应新的目录项,删除旧目录条目对应的旧的文件名,并不影响inode表(除时间戳)或磁盘上的数据位置,也就是说没有数据被移动。
    • 不同分区: mv就相当于cp和rm。

1. 文件的基础信息

ls -lih /etc
# 总用量 1.1M
# 51132238  drwxr-xr-x.   3     root   root    101   2月    09:54   abrt
# 16918723  -rw-r--r--.   1     root   root     16   2月    09:31   adjtime
# 16815120  -rw-r--r--.   1     root   root    12K   2月    09:55   aliases.db
# 50354139  drwxr-xr-x.   2     root   root    261   2月    09:56   alternatives
   inode    类型和权限   硬链接   属主   属组    大小   月     时间     名称
  1. inode(索引节点):文件的唯一标识
  2. 类型和权限:11个字符,第一个字符为文件类型,9个字符为文件对应权限
  3. "."为和selinux有关的标识
  4. 硬链接数
  5. 属主:文件的拥有者
  6. 属组:文件的拥有组
  7. 大小
  8. 时间
  9. 文件名

2. 文件类型

  • Linux系统重,一切皆文件
文件类型符号代表意义
-普通文件(纯文本、二进制文件、数据文件等)
ddirectory 目录
llink 符号链接、软连接
ccharacter 字符设备文件(串口、设备)
bblock 块设备文件(硬盘、光驱)
ssocket 套接字文件(网络通信中的数据连接)
ppipe 管道文件

1)- 普通文件

创建:touch、vim、echo 、cat
拷贝、移动:cp、mv
删除:rm

2)d 目录

创建: mkdir -p
复制:cp -a/-r
删除: rm -fr

3. 文件及目录的查找

1)find 查找目录下的文件

选项作用
!取反(需要进行转义)
-a并且
-o
-name按照文件名查找文件
-inam按照文件名查找文件(忽略大小写)
-type根据文件类型进行搜索(f:文件、d:目录)
-perm按照文件权限来查找文件
-user按照文件属主来查找文件。
-group按照文件所属的组来查找文件。
-fprint文件名:将匹配的文件输出到文件。
-exec对查找后的进行处理 {} ;({}为查找出的内容,对分号转义)
-mtime按修改时间查找
-size按文件大小查找
-atime一定时间内被访问的文件
#案例1. 根据名字查找 -name 家目录的oldboy.txt文件
find  ~   -name     "oldboy.txt"
     路径 名字参数     具体文件

#案例2. 模糊查找 *表示所有
find / -name "*y*"

#案例3. 按文件类型查找 -type (默认为 -a)
find / -type f -name "oldbot*"


#案例4. 按文件类型查找 -type -o或者
find / -type d -o -name "oldbot*"

#案例5. -exec 对查找后的进行处理
find /data -type f -exec ls -l {} \;

#案例6. -mtime 按修改时间进行查找
find /data -type d -mtime +5 -nmae '*.log'


#案例7. 按文件属性、属组找
find  /home  -user  jack   //属主是jack的文件
find  /home  -group  hr   //属组是hr组的文件

#案例8. 按文件大小
find  /etc  -size  +5M   //大于5M
find  /etc  -size  5M    //等于5M
find  /etc  -size  -5M   //小于5M

4. 文件打包压缩

选项作用
-z通过gzip压缩或解压
-c创建新的tar包
-v输出tar命令执行过程
-f指定压缩文件名字
-t不解压查看tar包内容
-C指定解压路径
-x解压tar包
-h跟随软链接
#案例1. 指定压缩文件名字
tar zcvf /opt/data.tar.gz ./data

#案例2. 不解压查看内容
tar tf /opt/data.tar.gz 

#案例3. 对文件进行解压
tar zxvf /opt/data.tar.gz

#案例4. 指定解压路径
tar zxvf /opt/data.tar.gz -C /tmp/

十六、用户管理

1. UID用户号

uid号用户
0特权用户
1~499系统用户
1000+普通用户

2. 用户分类

  1. 超级管理员(UID=0):root
    • UID为0
  2. 虚拟用户(UID=1-1000):实际存在的用户,但不允许其登录
    • 满足文件或进程运行的属主要求
  3. 普通用户(UID=1001~):实际存在,允许其登录。管理员创建的,帮助管理员管理系统
    • 权限仅仅限制在家目录,在系统级目录可以读不可写,不可进入/root目录

3. 用户管理

1) 用户管理命令

管理操作命令
创建用户useradd user01
切换用户su - user01
查询用户信息id user01
指定UIDuseradd user02 -u(指定UID)1503 -d(指定家目录名称)/home/user02 -s(指定shell类型)/bin/sh -g(指定组)boss -M(不创建家目录)
删除用户usrdel -f(强制删除)-r(同时删除文件) user01
修改密码root修改其他用户密码:passwd user02,用户user02修改自己的密码:passwd
修改登录的shellusermod -u(修改用户号)-d(修改登录目录) /home/user 1020 -s /sbin/nologin user02 -M(不创建家目录)

2) 用户相关文件

用户相关文件作用
/etc/passwd用户所在文件
/etc/shadow用户密码所在

3)/etc/passwd的内容介绍

在这里插入图片描述

不给解释器,即无法登陆(/sbin/nologin)

4)/etc/shadow的内容介绍

在这里插入图片描述

4. 组分类

  1. 基本组:随用户创建、自动创建的同名组
    • 显示在/etc/passwd
  2. 附加组:用户加入的其他组
# 案例1. 修改基本组
usermod BBB -g CCC

# 案例2. 修改附加组
usermod BBB -G CCC

5. 组管理

1)组管理操作命令

管理操作命令
创建组groupadd -g(指定组号)2002 hr
指定GIDgroupadd net01 -g 2000
删除组groupdel net01
修改组信息groupmod -g 152 DDD
查看组net01信息:grep ‘net01’ /etc/group

2)组相关文件

组相关文件作用
/etc/group用户组所在文件
/etc/gshadow用户组密码所在

3)/etc/gruop文件介绍

在这里插入图片描述

4)/etc/gshadow文件介绍

在这里插入图片描述

6. 文件权限

1)文件属性含义

# (共11位,中间9位为文件权限,3位一组)
d      rwx     r-x      r-x        .    2    root    root 
类型  属主权  属组权    其他人权               属主    属组

2)符号含义

  • 权限对象:(所有:a)

    • 属主:u
    • 属组:g
    • 其他人:o
  • 权限类型:

    • 读:r=4
    • 写:w=2
    • 执行:x=1

若要rwx属性则4+2+1=7

若要rw-属性则4+2=6

若要r-x属性则4+1=5

类别默认权限(umask默认022)
文件644(文件所有者默认具备可读可写权限,用户组和其他用户只有可读权限)
目录755(目录文件所有者拥有读、写、执行所有权限,所在用户组和其他用户只有读和执行权限)

3)特殊符号含义

特殊符号作用对应数字
suid让普通用户临时拥有该文件的属主的执行权限,suid权限只能应用在二进制可执行文件(命令)上4
sgidsgid权限一般应用在目录上,当一个目录拥有sgid权限时,任何用户在该目录下创建的文件的属组都会继承该目录的属组。2
stickysticky权限一般针对目录来设置,作用是只允该目录下的文件的创建者删除自己的创建的文件,不允许其他人删除文件。1

4)更改文件权限

  • chmod 对象(u/g/o/a) 赋值符(+/-/=) 权限类型(r:4/w:2/x:1) 文件/目录
#案例1. 增加属主执行权
chmod u+x file1
#执行文件
./file1


#案例2. 去除属主执行权
chmod u-x file1


#案例3. 使用数字赋权(为其u、g、o赋予rwx权)
chmod 777 file1
chmod a=rwx file1


5)更改文件拥有者

  • chown -R(递归) 属主.属组 文件/目录
#案例1. 更改属主、属组
chown alice.hr file1   


#案例2. 只更改属主
chown alice file1 


#案例3. 只更改属组
chown .hr file1  

  • chgrp -R(递归) 组名 文件/目录

十七、Linux正则表达式

0. 变量的引用

引号名称作用
‘’单引号直接输出,所见即所得
“”双引号引用字符串、解析变量 强调是一个整体
``反引号引用命令,解析命令(等价$())
无引号无引号同双引号

一些特殊符号

  1. $:调用变量时使用 <br >
  2. \:转义字符,将特殊的字符还原
  3. {}:用于生成序列,引用变量,让变量变为整体

环境变量的优先级:(递减)

    1. /etc/bashrc
    1. ~/.bashrc
    1. ~/.bash_profile
    1. /etc/profile

设置环境变量:

  • export JAVAHOME=/aplication/jdk

取消环境变量:

  • unset JAVAHOME
a = "oldboy"
案例1.单引号
echo '$a'
# $a

案例2.双引号
echo "$a"
# oldboy

案例3.直接引用
echo $a
# oldboy
案例4.反引号
echo date
# date

echo `date`
# Sun Oct 423:54:38CST2024

echo $(date)
# Sun Oct 423:54:38CST2024

1、基本正则(BRE)

字符名称作用
^尖角号^oldboy:表示匹配以oldboy单词开头的行
$美元符oldboy$:表示匹配以oldboy单词结尾的行
^$组合符表示空行
.点号表示任意匹配一个且只有一个字符
\转义字符让有特殊含义的字符脱掉马甲
*匹配一个字符连续出现0次或1次以上
.*组合符匹配所有内容
^.*组合符匹配任意多个字符开头的内容
.*$组合符以任意多个字符结尾的内容
[abc]匹配[]集合内部的任意一个字符。[a-c]
[^abc]匹配不包含^后的任意字符a或b或c

元字符基础集

  • grep 选项 匹配字符 文件
    • -c:统计行数
    • -i:不区分大小写
    • -l:查询多文件时,只输出包含匹配字符的文件名
    • -n:显示行号
    • -s:不显示不存在或无匹配文本的错误信息
    • -v:去反,显示不匹配的所有行
    • -o:只显示符合的字符串
    • -r:递归查找
#案例1.搜索非空行
grep -vn "^$" a.txt

#案例2.只输出匹配行号
grep -c "root" /etc/passwd 

#案例3.不区分大小写
grep -i "root" /etc/passwd  

#案例4.只显示符合匹配的文件名
grep -l "root" /etc/passwd  /etc/passwd.ori 

#案例5.输出匹配行以及行号
grep -n "root" /etc/passwd 

#案例6.匹配以"root"开头的行
grep "^root" /etc/passwd 

#案例7.匹配以"root"结尾的行
grep "root$" /etc/passwd 


#案例8.匹配以s开头k结尾的行
grep "s.*k" /etc/passwd 

#案例9.匹配(0次或多次)0的行
grep "0*" /etc/passwd 

2、拓展正则(ERE)

字符作用
+匹配前一个字符1次或1次以上
[😕]+匹配括号内的:或/字符1次或1次以上
?匹配前一个字符0次或1次
|表示或者,同时过滤多个字符
( )分组过滤被括起来的东西表示一个整体,( )中的内容可以被后面的\n引用,n位数字,表示引用第几个括号内的内容。
\n引用前面()里的内容,eg:(aaa)\1,匹配aaa
a{n,m}匹配前一个字符最少n次,最多m次
a{n,}匹配前一个字符最少n次
a{n}匹配一个字符正好n次
a{,m}匹配一个字符最多m次

元字符扩展集

  • grep -E 选项 匹配字符 文件 == egrep 选项 匹配字符 文件

3、特殊中括号表达式

正则表达式描述示例
[:alnum:]匹配任意一个字母或字符,相当于[a-zA-Z0-9][[:alnum:]]
[:alpha:]匹配任意一个大小写字母字符,相当于[a-zA-Z][[:alpha:]]
[:blank:]匹配空格和制表符,横向纵向[[:apha:]]
[:digit:]匹配任意一个大数字字符,相当于[0-9][[:digit:]]
[:lower:]匹配任意一个小写字母字符,相当于[a-z][[:lower:]]
[:upper:]匹配任意一个大写字母字符,相当于[A-Z][[:upper:]]
[:print:]打印任意一个可打印的字符[[:print:]]
[:space:]匹配任意一个换行符、回车等在内的所有空白符[[:space:]]

4、元字符表达式

grep -P

表达式描述
\b匹配单诃边界,例如: \boldboy\b 只匹配oldboy单词不匹配oldboy字符串
\B匹配非单词的边界例如: oldboy\B 匹配oldboy123中的oldboy,不匹配单独的oldboy单词
\w匹配字母、数字与下划线,等价[_[:alnum:]]
\W匹配字母、数字与下划线以外的字符,等价[^_[:alhun:]]
\d匹配单个数字字符
\D匹配单个非数字字符
\s匹配1位空白字符
\S匹配1位非空白字符
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值