20145214 《信息安全系统设计基础》第1周学习总结
教材学习内容总结
Linux学习路径

快捷键
-
CTRL+ALT+T:打开终端,天天使用终端,用鼠标打开太低效了 -
CTRL+SHIFT+T:新建标签页,编程时有重要应用 -
ALT+数字N:终端中切换到第N个标签页,编程时有重要应用 -
CTRL+ALT+F1~F6:切换纯命令行界面的终端 -
CTRL+ALT+F7:切换到其中一个终端后切换回图形界面 -
Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成
![]()
-
上下键盘:切换命令历史,刚输入一个很长的命令,按上键就可以恢复 -
CTRL+C:中断程序运行。如输入find /后用此快捷键中断程序。
![]()
-
Ctrl+d:键盘输入结束或退出终端 -
Ctrl+s:暂定当前程序,暂停后按下任意键恢复运行 -
Ctrl+z:将当前程序放到后台运行,恢复到前台为命令fg -
Ctrl+a:将光标移至输入行头,相当于Home键 -
Ctrl+e:将光标移至输入行末,相当于End键 -
Ctrl+k:删除从光标所在位置到行末 -
Alt+Backspace:向前删除一个单词
通配符
*: 匹配 0 或多个字符?:匹配任意一个字符[list]:匹配 list 中的任意单一字符[!list]: 匹配 除list 中的任意单一字符以外的字符[c1-c2]:匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]{string1,string2,...}:匹配 sring1 或 string2 (或更多)其一字符串{c2..c2}:匹配 c1-c2 中全部字符 如{1..10}
![]()
安装并使用banner
用户管理
-
查看用户
who -参数
![]()
-
创建用户
![]()
-
删除用户
![]()
文件权限管理
- 一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件
- 创建空文件
touch 文件名 - 创建目录
mkdir 文件名或mkdir -p 多级目录 - 复制文件到目录
cp 文件名 指定目录 - 复制目录
cp -r 目录名 family - 删除文件
rm 文件名或强制删除rm -f 文件名 - 删除目录
rm -r 目录名 - 将文件移动到目录下
mv 源目录文件 目的目录 - 重命名文件
mv 旧的文件名 新的文件名 - 使用
cat,tac和nl命令查看文件 - 使用
more和less命令分页查看文件
环境变量
-
创建变量:
declare 变量名 -
用
=赋值 -
用
echo $变量名读取变量值
![]()
-
添加自定义路径到PATH环境变量,之后可以在其它任意目录执行命令。
PATH=$PATH:/home/shiyanlou/mybin
![]()
-
unset 变量名删除一个环境变量 -
${变量名#匹配字串}:从头向后开始匹配,删除符合匹配字串的最短数据 -
${变量名##匹配字串}:从头向后开始匹配,删除符合匹配字串的最长数据 -
${变量名%匹配字串}:从尾向前开始匹配,删除符合匹配字串的最短数据 -
${变量名%%匹配字串}:从尾向前开始匹配,删除符合匹配字串的最长数据 -
${变量名/旧的字串/新的字串}: 将符合旧字串的第一个字串替换为新的字串 -
${变量名//旧的字串/新的字串}:将符合旧字串的全部字串替换为新的字串 -
source .zshrc作用等同于. ./.zshrc,可以让环境变量立即生效,若用第二种方式,注意第一个点后面有一个空格,而且后面的文件必须指定完整的绝对或相对路径名,source 则不需要
whereis
whereis只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)
locate
locate相对于whereis搜索的更全面,可以用来查找指定目录下的不同文件类型locate /指定目录/以**开头的文件,注意若要查找如*.jpg需要在前面加\转义。- 如果想只统计数目可以加上-c参数,-i参数可以忽略大小写进行查找,whereis 的-b,-m,-s同样可以是使用。
which
which 软件名来确定是否安装了某软件,只从PATH环境变量指定的路径中搜索命令
find
- 不但可以通过文件类型、文件名进行查找而且可以根据文件的属性进行搜索。
查看磁盘和目录的容量
- 使用 df 命令查看磁盘的容量
- 使用 du 命令查看目录的容量
- 两种命令后面加上
-h都会以更易读的方式展示,du -h -d 数字 ~可以查看比数字高一级的目录信息。
![]()
type
-
使用
type来区别内建命令和外部命令。
![]()
-
xxx is a shell builtin说明是内建命令;xxx is /usr/sbin/xxx说明是外部命令;xxx is an alias for xx --xxx说明该指令为命令别名所设定的名称
help
- help 命令只能用于显示内建命令的帮助信息
man
- man 没有内建与外部命令的区分,因为 man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述
info
- info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息
- 与 man 相比,info 工具可显示更完整的 GNU 工具信息。若 man 页包含的某个工具的概要信息在 info 中也有介绍,那么 man 页中会有“请参考 info 页更详细内容”的字样
管道
-
ls -al /etc | less试用管道,可以一行一行的看/etc目录下的文件和目录 -
cut /etc/passwd -d ':' -f 1,6打印/etc/passwd文件中以:为分隔符的第1个字段和第6个字段分别表示用户名和其家目录 -
grep [命令选项]... 用于匹配的表达式 [文件]...grep结合正则表达式实现复杂却高效的匹配和查找 -
wc用于计数
![]()
-
sort支持的排序有按字典排序,数字排序,按月份排序,随机排序,反转排序,指定特定字段进行排序等等 -
uniq命令可以用于过滤或者输出重复行
文本处理命令
-
tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换
![]()
-
col 命令可以将Tab换成对等数量的空格建,或反转这个操作
-
join 将两个文件中包含相同内容的那一行合并在一起
-
paste 在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开
![]()
正则表达式
\将下一个字符标记为一个特殊字符、或一个原义字符^匹配输入字符串的开始位置。$匹配输入字符串的结束位置。{n}n是一个非负整数。匹配确定的n次。{n,}n是一个非负整数。至少匹配n次。{n,m}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。*匹配前面的子表达式零次或多次。+匹配前面的子表达式一次或多次。?匹配前面的子表达式零次或一次。.匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“(.|\n)”的模式。(pattern)匹配pattern并获取这一匹配的子字符串。该子字符串用于向后引用。-
`x|y` 匹配x或y。 [xyz]字符集合(character class)。匹配所包含的任意一个字符。[^xyz]排除型(negate)字符集合。匹配未列出的任意字符。[a-z]字符范围。匹配指定范围内的任意字符。[^a-z]排除型的字符范围。匹配任何不在指定范围内的任意字符。
教材学习中的问题和解决过程
问题1:无法找到cheat命令
-
![]()
-
解决:
-
一开始打算直接使用cheat命令,通过cheat来学习其他的命令,后来发现cheat命令不是系统中自带的,参考了蔡野同学的博客和学习资料后
-
先安装了pip和Git
![]()
-
然后通过git下载cheat
![]()
-
安装所需要的python依赖包
![]()
-
最后复制cheat的git库
![]()
-
但在进入cheat目录,运行‘setup.py’时出现了问题。目前这个问题还没有解决。无法解决定位到软件包的情况下,我选择了用实验楼的环境进行练习。
问题2:在shell脚本中添加内容时提示光标处没有字符串
-
![]()
-
解决:
-
尝试了百度找不到解决方案,后来索性不理会,继续输入要添加的内容,输入到第三个字符左右后就能够成功输入,只算是解决了一半的问题,因为还不知道这其中的奥秘到底是什么。
问题3:在shell脚本中添加内容完毕后,无法成功保存并退出
- 解决:先按住
ESC键,然后按:,接着按W键和Q键,最后enter键成功退回到原来的命令行界面。
问题4:使用sed命令时无法得到预期的结果
-
![]()
-
解决:
-
还没找到解决方法。
问题5:在使用find查找时提示“没有那个文件或目录”
-
![]()
-
解决:
-
猜测是权限不够的问题,于是将命令中原来的文件目录由
\换成.,完整的命令为find . -size -5M -and -mtime +2 | wc -l,成功解决问题。
![]()
课后作业中的问题和解决过程
在虚拟机中安装DDD软件
判断DDD软件能不能安装
查找系统中50M以上的文件
查找系统中两天前修改过的且小于5M的文件
-
首先用通俗的命令进行查找,发现查找出来的结果太多
![]()
-
接着在命令后加上
| more分页进行查看,发现还是不方便
![]()
-
最后索性
| wc -l直接显示搜索出来的文件数量
![]()
查找操作系统的信息
查找当前目录下所有*.c文件中哪个文件中包含main函数
建立一个目录,里面建立两个子文目录,如何一条命令删除三个目录
其他(感悟、思考等,可选)
- 这是linux安装完毕后正式入门学习的第一周,要掌握的命令很多,所以我在教材学习内容总结部分写了大部分容易混淆的命令和用法,没有过多的纠结课程学习的其他内容,因为这些在实验楼中查看文档就可以轻松的看到。
- 有一些指令,比如apt-get,在学习过程中就会频繁的使用到,这样使得我对这些命令的掌握比其他的更深刻,这也对日后的学习提供了经验,只要多多使用,便能够熟练应用。
- 在学习的过程中,跟着实验楼做,让实验变得更直观,在跟着实验楼学习之后再思考老师提出的课后问题,在解决问题的过程中反复看知识点,相当于又复习了一遍,受益匪浅。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第零周 | 0/0 | 1/1 | 5/5 | 使用虚拟机安装linux系统,安装ubuntu |
| 第一周 | 100/100 | 1/2 | 20/25 | 掌握核心的linux命令,了解了linux操作系统 |
































浙公网安备 33010602011771号