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