既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
创建与删除
创建
make a directory / directorys
语法
mkdir [-p] dirName dirName ...
参数说明:
- -p 确保目录名称存在,不存在的就建一个。
例如,在家目录下创建一个 lady_killer9 目录
例如,在家目录下创建一个 lady/killer/9 的多级目录
删除空目录
remove an empty directory/ directorys
语法
rmdir [-p] dirName
参数:
- -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
例如,将刚才新建的空目录删除
非空目录如何删除?
语法
rm [options] name...
参数:
- -i 删除前逐一询问确认。
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
- -r 将目录及以下之档案亦逐一删除。
家目录下新建一个目录lady,里面新建一个文档(touch killer.txt)
文件
创建
语法
touch 路径/文件名 路径/文件名 路径/文件名 …
上面有了,不再展示。展示一下一次创建多个,前面的mkdir也可以一次创建多个目录。
复制
语法
cp [options] source dest
参数说明:
- -f:覆盖已经存在的目标文件而不给出提示。
- -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
- -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
将家目录下的lady.txt文件复制到lady目录下
将家目录下的lady目录复制到killer目录下
kali linux下是默认覆盖,不提示,要提示可使用-i选项。
移动
move file
语法
mv [options] source dest
mv [options] source... directory
参数说明:
- -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
- -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
- -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
- -n: 不要覆盖任何已存在的文件或目录。
- -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
重命名
将某文件移动到同一个目录下
将家目录下的文件killer.txt重命名为killer9.txt
将killer.txt移动奥家目录下的lady目录下
查看
全部查看
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
使用权限
所有使用者
语法格式
cat [-bn] fileName
参数说明:
-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
查看 /etc/profile 文件,显示行号
cat -n /etc/profile
注意,直接显示全部,如果行数过多,不太合适
清空文件
cat dev/null > filepath
例如,清空 lady目录下的lady.txt文件
滚动查看
语法
more [-num] [fileNames..]
参数:
- -num 一次显示的行数
操作:
- Enter 向下n行,需要定义。默认为1行
- Ctrl+F 向下滚动一屏
- 空格键 向下滚动一屏
查看 /etc/file 文件,一页5行
相较于cat,more可以分页,提前退出,适合大文件,缺点是没有行号显示
使用管道符 | ,将两个命令合起来用,管道左边的内容作为右边的输入
cat -n /etc/profile | more -5
上面的命令相当于 more -5 有行号的 /etc/profile
特大文件查看
对于几兆甚至更大的日志文件等使用cat或more就不合适了
语法
less [参数] 文件
参数说明:
- -m 显示类似more命令的百分比
- -N 显示每行的行号
- -s 显示连续空行为一行
- /字符串:向下搜索"字符串"的功能
- ?字符串:向上搜索"字符串"的功能
- q 退出less 命令
- 空格键 滚动一页
- 回车键 滚动一行
- [pagedown]: 向下翻动一页
- [pageup]: 向上翻动一页
使用前段时间爬取的小说Python-简单小说爬虫(以《天官赐福》为例),3M多的小说,在Windows上鼠标右键打开,还会转2-3秒
我传到了家目录的文档目录下
瞬间打开
重定向和追加
:用前面的内容覆盖掉后面文件的内容
:用前面的内容追加到后面的文件尾部
第一个前面清空文件时提到过
echo
语法
echo 字符串
head
命令格式:
head [参数] [文件]
参数:
- -q 隐藏文件名
- -v 显示文件名
- -c<数目> 显示的字节数。
- -n<行数> 显示的行数。
tail
命令格式:
tail [参数] [文件]
参数:
- -f 循环读取【实时显示】
- -q 不显示处理信息
- -v 显示详细的处理信息
- -c<数目> 显示的字节数
- -n<行数> 显示文件的尾部 n 行内容
举例:
将家目录的文件目录列表写到lady.txt文件中
将"study hard during winter vacation" 追加到lady.txt文件后面
注:head、tail无参数默认查看10行
软链接
语法:
ln [参数][源文件或目录][目标文件或目录]
必要参数:
- -b 删除,覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
类似于Windows下的快捷方式
上图可以看到,我安装了pyhton2和python3,部分旧软件版本没有跟上,会使用python2,并找名为python的软链接,我们创建一个python的软链接,链接到python2.7
ln -s /usr/bin/python2.7 /usr/bin/python
这样对于开头是
#!/usr/bin/env python
的文件,你也可以通过./xxx来运行了。
查找
语法
find [搜索范围] [选项]
选项
- -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写。
- -size n : b、c、k、M等单位,+、-代表大于和小于
查找家目录下名为lady.txt的文件
查找家目录下大于3M的文件
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,可以手工更新数据库 ,命令为:
updatedb
查找家目录下名为lady.txt的文件
语法
grep [选项][文件或目录...]
**-e <样式>:**通过正则表达式进行匹配
-i : 忽略字符大小写的差别。
-n: 在显示符合样式的那一行之前,标示出该行的列数编号。
查找lady.txt文件中包含lady的行,并显示行号,使用管道符 |
查找lady.txt文件中包含ad的行,并显示行号,使用管道符 |
查找lady.txt文件中40几分创建的文件或目录所在行,并显示行号,不使用管道符
备份与压缩
.gz
gzip [选项] 文件
选项:
- -f 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
gunzip [选项] 文件
选项
- -f 强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
压缩家目录下的lady.txt
注意:源文件不会保留。
解压缩家目录下的lady.txt
注意:源压缩文件不会保留。
.zip
zip [选项] xxx.zip 目录或文件
选项
- -r 递归处理,将指定目录下的所有文件和子目录一并处理。
压缩家目录下的lady目录为lady.zip
这个原目录或文件还是在的
unzip [选项] 目录或文件
选项
- -d<目录> 指定文件解压缩后所要存储的目录。
解压缩lady.zip到家目录下的killer目录下
注意,由于前面压缩时目录填写的为~/lady,所以解压后路径为绝对路径,即多了一层目录,若使用lady/则不会有root这一层。
.tar.gz
tar [选项] 文件或目录
选项
- -c 建立新的备份文件,产生.tar打包文件。
- -C <目的目录>,解压到的目录
- -f<备份文件> 指定压缩后的文件名。
- -s 还原文件的顺序和备份文件内的存放顺序相同。
- -v 显示指令执行过程。
- -x 从备份文件中还原文件。
- -z 通过gzip指令处理备份文件,打包同时压缩。
压缩家目录下的 9.txt 和lady.txt 为 lady9.tar.gz,显示过程
tar -zcvf lady9.tar.gz 9.txt lady.txt
将家目录下的killer目录压缩为killer.tar.gz
tar -zcvf killer.tar.gz killer/
解压killer.tar.gz到家目录下的lady目录
tar -zxvf killer.tar.gz -C lady/
用户管理
用户组:一个组有一个或多个用户。初始状态下有 root组和root用户。
home:家目录,一个用户登录时会进入对应的家目录。例如,home/lady
用户
添加用户
useradd 选项 用户名
参数说明:
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
passwd 用户名 来添加密码
例如,添加lady用户,主目录为/home/lady
使用SSH客户端登录后,当前目录就是
删除用户
userdel [-r] 用户名
-r:删除用户家目录及里面包含的所有目录、文件
先退出登录后再进行用户删除
例如,删除lady用户,保留家目录
userdel lady
修改用户
语法
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
参数说明:
- -c<备注> 修改用户帐号的备注文字。
- -d登入目录> 修改用户登入时的目录。
- -e<有效期限> 修改帐号的有效期限。
- -f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。
- -g<群组> 修改用户所属的群组。
- -G<群组> 修改用户所属的附加群组。
- -l<帐号名称> 修改用户帐号名称。
- -L 锁定用户密码,使密码无效。
- -s 修改用户登入后所使用的shell。
- -u 修改用户ID。
- -U 解除密码锁定。
不进行截图了,一般很少用,都是创建时想好了,参数和useradd也差不多。在用户组一节有展示。
显示用户信息
语法
id [-gGnru][--help][--version]用户名
参数说明:
- -g或–group 显示用户所属群组的ID。
- -G或–groups 显示用户所属附加群组的ID。
- -n或–name 显示用户,所属群组或附加群组的名称。
- -r或–real 显示实际ID。
- -u或–user 显示用户ID。
- -help 显示帮助。
- -version 显示版本信息。
显示用户lady的所有信息。
没有用户时会显示
root@frank:/home# id lady_killer
id: “lady_killer”:无此用户
查看/切换用户
whoami
显示当前用户
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
参数说明:
- -f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
- -m -p 或 --preserve-environment 执行 su 时不改变环境变数
- -c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
- -s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
- –help 显示说明文件
- –version 显示版本资讯
-
- -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
-
- 切换用户后进入对应家目录
- USER 欲变更的使用者帐号
- ARG 传入新的 shell 参数
例如,切换到lady用户,并进入对应家目录
切到root
注意,低权限到高权限需要输入密码
用户组
注:修改组usermod不常用,没有展示
添加用户组
语法
groupadd 命令 语法格式如下:
groupadd [-g gid [-o]] [-r] [-f] group
参数说明:
- -g:指定新建工作组的 id;
- -r:创建系统工作组,系统工作组的组ID小于 500;
- -K:覆盖配置文件 “/ect/login.defs”;
- -o:允许添加组 ID 号不唯一的工作组。
- -f,–force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。
例如,添加组 fashi、sheshou,添加用户 houyi 到组 sheshou
cat /etc/group
查看用户houyi的信息
创建用户时会默认创建对应名称的组,如果没有指定的话,否则不会创建。lady没有指定组,所以有lady组。但houyi指定了组sheshou,就没有再生成组houyi。
例如,创建yewang组,id为1003,将houyi改到yewang组
删除用户组
groupdel [用户组名]
组和权限管理
前面学习了,目录和文件,以及用户
文件有属性,包括所有者,所在组,其它组,可执行权限等。
使用用户houyi在其家目录下,创建一个xixue.txt
修改文件所有者/所在组
chown具有root权限才能使用,助记:chage owner
语法
chown [-cfhvR] user[:group] file...
参数 :
- user : 新的文件拥有者的使用者 ID
- group : 新的文件拥有者的使用者组(group)
- -c : 显示更改的部分的信息
- -f : 忽略错误信息
- -h :修复符号链接
- -v : 显示详细的处理信息
- -R : 处理指定目录以及其子目录下的所有文件
将lady.txt的所有者改为lady
chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。 助记:change group
语法
chgrp [-cfhRv] 所在组 文件或目录
选项
- -c 效果类似"-v"参数,但仅回报更改的部分。
- -f 不显示错误信息。
- -h 只对符号连接的文件作修改,而不更动其他任何相关文件。
- -R 递归处理,将指定目录下的所有文件及子目录一并处理。
- -v 显示指令执行过程。
将lady.txt的所在组改为lady
权限介绍
修改权限首先得看得懂文件的权限有哪些,就是ls -l展示的d、r、w等
第一个字母表示文件类型,
- ”-”,普通文件。
- ”d”目录。
- “l”符号链接。
- “b”块设备文件。
- “c”字符设备文件。
接下来是文件所有者权限、文件所在组的用户的权限、文件其他组的用户的权限,每组三个
- r是只读权限
- w是写的权限,对于文件,是可以修改,若对文件目录也拥有写权限,则可以删除;对于目录,可以在目录内创建文件或目录、删除目录。
- x是可执行权限,对于文件,是可以执行的;对于目录,是可以进入的。
- -是没有任何权限
数字
- 是文件,表示硬链接的个数
- 是目录,表示子目录的个数
接下来是拥有者、所在组、文件大小/4096、文件创建时间、文件名
以目录lady为例
d rwx r-x r-x lady lady 4096 1月20 17:01 lady
目录 拥有者可读、写、进入 所在组用户可读、进入 同左 拥有者 所在组 目录都是4096 创建时间 目录名
修改权限
下面模式记一种即可。
符号模式
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:
who(用户类型)
who | 用户类型 | 说明 |
---|---|---|
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
a | all | 所用用户, 相当于 ugo |
operator 的符号模式表:
Operator(符号模式表)
Operator | 说明 |
---|---|
+ | 为指定的用户类型增加权限 |
- | 去除指定用户类型的权限 |
= | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
permission 的符号模式表:
Permission(权限表)
Permission | 名字 | 说明 |
---|---|---|
r | 读 | 设置为可读权限 |
w | 写 | 设置为可写权限 |
x | 执行权限 | 设置为可执行权限 |
X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
例,对于lady.txt拥有者赋予读、写、执行权限,所在组和其他组读、执行权限
**注:**权限一样时,可写在一起,go=rx
可以看到lady.txt变绿了,前面提到绿色是代表可执行文件
例,对于lady.txt拥有者赋予去除 执行 权限,所在组增加 写 权限
数字模式
数字模式
数字 | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
例,将lady.txt的权限修改为rwxr-xr-x
系统管理
时间日期
date ‘格式’
- %y : 年份的最后两位数字 (00.99)
- %Y : 完整年份 (0000…9999)
- %m : 月份 (01…12)
- %d : 日 (01…31)
- %D : 直接显示日期 (mm/dd/yy)
- %c : 直接显示日期与时间
- %a : 星期几 (Sun…Sat)
- %A : 星期几 (Sunday…Saturday)
- %b : 月份 (Jan…Dec)
- %B : 月份 (January…December)
- %H : 小时(00…23)
- %M : 分钟(00…59)
- %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
- %S : 秒(00…61)
- -s datestr : 将系统时间设为 datestr 中所设定的时间
- -u : 显示目前的格林威治时间
- 显示当前时间(默认)
- 显示当前是哪一天
- 显示年月日时分秒(格式 年-月-日 时:分:秒),格式与-s选项中datestr的格式一样。
日期时间显示格式,变化无穷,根据需要来,无法展示全面。
日历
cal 显示当前月日历
cal 年份
cal 月份 年份
任务调度
语法
crontab [ -u user ] { -l | -r | -e } file
参数说明:
- -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL vim)
- -r : 删除目前的时程表
- -l : 列出目前的时程表
时间格式如下:
f1 f2 f3 f4 f5 program
- 其中 f1 是表示分钟(0-59),f2 表示小时(0-23),f3 表示一个月份中的第几日(1-31),f4 表示月份(1-12),f5 表示一个星期中的第几天(0-7)。program 表示要执行的程序。
- 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,以此类推
- 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,以此类推
- 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,以此类推
- 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,以此类推
0 */2 * * * /sbin/service httpd restart 每两个小时重启一次apache 50 7 * * * /sbin/service sshd start 每天7:50开启ssh服务
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
ss=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhZHlfa2lsbGVyOQ==,size_16,color_FFFFFF,t_70)
任务调度
语法
crontab [ -u user ] { -l | -r | -e } file
参数说明:
- -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL vim)
- -r : 删除目前的时程表
- -l : 列出目前的时程表
时间格式如下:
f1 f2 f3 f4 f5 program
- 其中 f1 是表示分钟(0-59),f2 表示小时(0-23),f3 表示一个月份中的第几日(1-31),f4 表示月份(1-12),f5 表示一个星期中的第几天(0-7)。program 表示要执行的程序。
- 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,以此类推
- 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,以此类推
- 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,以此类推
- 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,以此类推
0 */2 * * * /sbin/service httpd restart 每两个小时重启一次apache 50 7 * * * /sbin/service sshd start 每天7:50开启ssh服务
[外链图片转存中…(img-ySxJEaBT-1715517110696)]
[外链图片转存中…(img-96esakNC-1715517110697)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!