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,tacnl命令查看文件
  • 使用moreless命令分页查看文件

环境变量

  • 创建变量: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操作系统

参考资料

Copyright © 2024 20145214张宁
Powered by .NET 8.0 on Kubernetes