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次。*
匹配前面的子表达式零次或多次。+
匹配前面的子表达式一次或多次。?
匹配前面的子表达式零次或一次。.
匹配除“ ”之外的任何单个字符。要匹配包括“ ”在内的任何字符,请使用像“(.| )”的模式。(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操作系统 |