本文章最初发布在 XJHui’s Blog,未经允许,任何人禁止转载!
注意:最新修改版本已发布在 这里,点击前往查看!
时间日期类
date日期
语法:
1
2
3date # 显示当前时间
date "+%Y" # 显示当前年份
date "+%Y-%m-%d %H:%M:%S" # 格式化显示当前年月日时分秒,其中-、:可以任意修改案例:
显示当前时间:
1
date
运行结果:
显示年月日时分秒:
1
date "+%Y-%m-%d %M:%D:%S"
运行结果:
date设置
语法:
1
date -s '年-月-日 时:分:秒' # 设置日期,必须按照此格式设置时间
案例:将日期设置为2020-10-01 0:0:0
1
date -s '2020-10-01 00:00:00'
运行结果:
cal日历
语法:
1
cal year[可选,显示该年份日历] # 显示本月/指定年份的日历
案例:显示2024年日历
1
cal 2024
运行结果:
搜索查找类
find
语法:
1
find 搜索范围 -name,-user,-size[可选一项] 文件名 # 查找文件
案例:
在/root目录下查找名称为c.txt的文件:
1
find /root/ -name c.txt # 通配符也适用
查找所有者为root用户的文件:
1
find /root/ -user root
运行结果:
查找整个linux系统下大于20m的文件(+n大于,-n小于,n等于)
1
find / -size +20M # 注意:单位为M、k等
运行结果:
locate
语法:
1
locate 搜索文件 # 快速定位文件路径
注意:locate基于数据库进行查询,所以在第一次运行前要执行updatedb命令以更新数据库
案例:使用locate指令快速定位hello.txt文件所在目录
1
2updatedb # 更新(创建)数据库
locate hello.txt运行结果:
grep和|
语法:
1
2
3grep 字符串 # 查找指定内容
grep -n 字符串 # 查找指定内容并显示行号
grep -i 字符串 # 不区分大小写案例:在hello.txt中查找所有yes并显示行号
hello.txt内容:
代码:
1
cat hello.txt | grep -ni yes
运行结果:
压缩和解压类
gzip和gunzip
语法:
1
2gzip 文件 # 将文件压缩为.gz文件,后跟多个文件名即可压缩多个文件
gunzip 文件.gz # 将.gz后缀的文件解压案例:
将/root下的hello.txt文件压缩:
1
gzip hello.txt
运行结果:
将hello.txt.gz文件解压缩:
1
gunzip hello.txt.gz
运行结果:
注意:gzip只能用来压缩文件不能用来压缩目录,即使使用-r选项指定目录,也只能递归将目录下文件分别压缩
zip和unzip
语法:
1
2zip -r[可选,递归压缩] 压缩包名 文件 # 压缩文件目录
unzip -d[可选,指定压缩后的位置] 文件.zip # 解压.zip后缀的文件案例:
将/home目录下的所有文件压缩为mypackage.zip:
1
zip -r mypackage.zip /home/ # 注意:压缩包名在原目录前面
运行结果:
将mypackage.zip解压到/opt/tmp:
1
unzip -d /opt/tmp mypackage.zip # 注意:解压位置在压缩包前面
运行结果:
tar
语法:
1
tar [可选项,见下图] ***.tar.gz 要打包的内容(可为多个文件、目录) # 压缩文件或目录
可选项:
案例:
压缩多个文件,将/root/a.txt,/root/b.txt文件压缩成a_b.tar.gz:
1
tar -zcvf a_b.tar.gz a.txt b.txt
运行结果:
压缩/home下的所有文件(非压缩/home目录):
1
tar -zcvf test.tar.gz /root/* # 要区分/root/和/root/*
解压a_b.tar.gz到当前目录:
1
tar -zxvf a_b.tar.gz
解压a_b.tar.gz到/opt/tmp下:
1
tar -zxvf a_b.tar.gz -C /opt/tmp/ # 注意:指定路径需要在路径前添加参数-C(大写),并且路径必须存在
组的管理
组的介绍
- 概述:在linux中的每个用户必须属于一个组,不能独立于组外。
- 文件/目录:
- 所有者:文件归属的用户
- 所在组:所有者所在的用户组的用户
- 其他组:非所在组的其它用户
所有者
查看文件所有者
定义:一般为文件的创建者,谁创建了该文件,就自然成为该文件的创建者。
语法:
1
ls -ahl # 查看文件所有者,a(显示全部文件),h(human,使用M,k作为文件大小单位显示),l(列表显示)
案例:创建一个组police,再创建一个用户tom属于组police,然后使用tom来创建一个文件
1
2
3
4
5
6groupadd police # 创建police用户组
useradd -g police tom # police用户组下创建用户tom
passwd tom # 设置用户tom的密码
使用tom用户登录服务器
touch 1.txt # 创建文件1.txt
ls -ahl # 使用ls命令查看1.txt文件的所有者运行结果:
修改文件所有者:
语法:
1
chown 用户 文件 # 将文件所有者修改为用户
案例:使用root创建一个apple.txt的文件,将其所有者修改为tom
1
2
3
4touch apple.txt # root账户下创建apple.txt文件
ls -ahl # 查看该文件所有者信息
chown tom apple.txt # 将apple.txt文件的所有者修改为tom
ls -ahl # 再次查看该文件所有者信息运行结果:
注意:虽然所有者改变了,但修改前后用户所在组均为root,所以仅修改所有者不会改变其所在组。
所在组
定义:当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组
语法:
1
2ls -ahl # 查看文件所在组
chgrp 用户组 文件 # 修改文件所在组为用户组案例:/root下创建文件aorange.txt文件,使用chgrp指令修改文件所在组为police
1
2
3
4touch aorange.txt # 创建文件
ls -ahl # 查看文件所在组
chgrp police aorange.txt # 修改文件所在组
ls -ahl # 再次查看文件所在组运行结果:
同时修改文件所有者和所在组:
语法:
1
2
3chown -R 用户 文件 # 单独使用chown
chgrp -R 用户组 文件 # 单独使用chgrp
chown -R[可选,递归修改所有文件所有者和所在组] 用户:所在组 文件 # 同时修改文件所有者和所在组案例:修改/home/tom下文件的所有者和所在组为tom
1
chown -R tom:tom tom/
运行结果:
其他组
定义:除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
权限的管理
权限介绍
rwx权限
作用到文件:
- r(read):可查看
- w(write):可修改,但不代表具有删除的权限(对文件所在目录具有w权限时,才可删除)
- x(execute):可被执行
作用到目录:
- r:可读,ls查看目录内容
- w:可写,目录内创建、删除、重命名
- x:可执行,cd进入该目录
注意:关于子目录数量
修改权限
说明:使用chmod指令,可以修改文件或者目录的权限
使用+、-、=变更权限:
语法:
1
2
3
4u:所有者,g:所在组,o:其他组,a:所有用户(u+g+o)
chmod u=rwx,g=x,o=x 文件/目录名 # 给文件/目录赋权限
chmod o+w 文件/目录名 # 给文件/目录的其他组(o)添加一个写(w)权限
chmod a-x 文件/目录名 # 给文件/目录的所有用户都减一个执行权限案例:
给abc文件的所有者读写执行的权限,给所在组读执行的权限,给其他组用户执行权限
1
chmod u=rwx,g=rx,u=x abc
运行结果:
给abc文件的所有者除去执行权限,给所在组增加一个写的权限
1
chmod u-x,g+w abc
运行结果:
给abc所有用户增加读的权限
1
chmod a+w abc
运行结果:
使用数字变更权限:
语法:
1
2# 规则:r=4,w=2,x=1
chmod 751 abc # 等价于chmod u=rwx,g=rx,o=x abc案例:给abc文件的所有者读写执行的权限,给所在组读执行的权限,给其他组用户执行权限
1
2# u=rwx(7),g=wx(3),o=x(1)
chmod 731 abc运行结果:
最佳实践
警察和土匪
题设:
1
2
3police,bandit # 用户组
jack,jerry # 警察用户
xh,xq # 土匪用户题目:
创建组
1
2groupadd police
groupadd bandit创建用户
1
2
3
4
5
6
7
8useradd -g police jack
passwd jack
useradd -g police jerry
passwd jerry
useradd -g bandit xh
passwd xh
useradd -g bandit xq
passwd xq使用jack用户登录并创建一个文件,自己可以读写,本组人可以读,其他组没有任何权限
1
2touch a1.txt
chmod 640 a1.txt运行结果:
jack修改文件权限,让其他组人可以读,所在组用户可以写
1
chmod o+r,g+w a1.txt
运行结果:
验证同组可以修改:
jerry账号登录并尝试进入/home/jack目录下:
1
cd /home/jack/
运行结果:
原因:
注意:这个很好理解,在自己家里有权限但在整栋楼不一定有权限
使用jack账户修改/home/jack文件的权限:
1
chmod 750 jack/
运行结果:
注意:为什么给所在组5的权限?因为需要进入(x:1)和查看(r:4),所以总权限是4+1=5
再次尝试修改a1.txt文件内容:
xh投靠警察,看看是否可以读写
修改xh的所在组:
1
usermod -g police xh # 注意:修改某个用户所在组需要root账户下操作
尝试读写a1.txt文件:
不足之处,欢迎留言,会及时回复,及时更正!
创作不易,感谢支持!