20145229 《信息安全系统设计基础》第1周学习总结

20145229 《信息安全系统设计基础》第1周学习总结

教材学习内容总结

学习路径

初学Linux系统,我们了解到其应用的一个特点是通过命令行进行使用。学习使用Linux,可以按照如下路径进行学习:


在物理机系统上我们可以通过使用[Ctrl]+[Alt]+[F1]~[F6]切换六个纯命令行界面,而在在线实验环境中我们可以使用[Ctrl]+[Alt]+[F7]来完成切换回图形界面。

Ubuntu版Linux常用快捷键

CTRL+ALT+T: 打开终端
CTRL+SHIFT+T: 新建标签页,编程时很重要
ALT+数字N: 终端中切换到第N个标签页,编程时很重要
CTRL+C:  中断程序运行
Ctrl+D: 键盘输入结束或退出终端
Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行
Ctrl+Z: 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+A: 将光标移至输入行头,相当于Home键
Ctrl+E: 将光标移至输入行末,相当于End键
Ctrl+K: 删除从光标所在位置到行末
Alt+Backspace: 向前删除一个单词
Tab: 终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成
上下键盘: 切换命令历史,刚输入一个很长的命令,按上键就可以恢复
Shift+PgUp: 将终端显示向上滚动
Shift+PgDn: 将终端显示向下滚动

Linus命名格式

command [options] [arguments]
登录Linux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着选项(options)或参数(arguments),中括号代表是可选的,即有些命令不需要选项也不需要参数。

通配符的使用

字符	             含义
 *	                匹配 0 或多个字符
 ?	                匹配任意一个字符

[list] 匹配 list 中的任意单一字符
[!list] 匹配 除list 中的任意单一字符以外的字符
[c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
{string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串

通配符是一种特殊语句,主要有星号(*)和问号(?),用来对对字符串进行模糊匹配(比如文件名,参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。

部分命令介绍

  • man命令
    如果我们在 Linux 环境中遇到困难,可以使用 man 命令,它是Manual page的缩写,作用是调用手册页。
    如果我们想查看 man 命令本身的使用方式,可以输入 man man:

    手册通常被分为8个区段,要查看相应区段的内容,就在 man 后面加上相应区段的数字即可,如 man 1 ls 会显示第一区段中的ls命令man页面。
  • cheat命令
    cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。
    ‘Cheat’有两个主要的依赖——‘python’ 和 ‘pip’,在安装‘cheat’之前,确保系统安装了python和pip。安装过程如下:

    但在复制cheat的Git库的时候网址出现了问题,导致安装没有完成。
  • 其他命令
    查找相关的核心命令还有find,locate,grep,whereis,which等。
    find: 查找一个文件在系统中的什么位置。可以通过cheat find学习find命令。
    查找当前目录下大小大于50M的文件,查找大小大于10K的文件:

    locate: 快速搜寻数据库并找到档案,数据库由updatedb程序负责更新。
    查找etc目录下所有以sh开头的文件:

    grep: 可以对文件全文检索,比如你接手一个C语言项目,里面有上百个C源文件,想找找main函数在那个文件中,你可以通过grep -n main *.c,快速找到main在哪个C文件中并指出在第几行。grep支持正则表达式,正则表达式也是一个重要的元知识。可以通过cheat grep学习grep命令。上面还提到,
    whereis,which: 告诉你使用的命令工具装在什么地方。Linxu初学者会不习惯Linux的文件系统,C盘呢?D盘呢?用apt-get install安装程序好象也不用我们选择安装位置,程序装在哪了?比如:我们在Linux下上网使用firefox浏览器,大家可以使用whereis firefox或更精确的使用which firefox来看看结果。
    apt-cache: 可以在使用apt-get install安装一个程序时先找找软件源的库里有没有这个程序,有才可以安装。比如老师推荐了一个调试工具ddd,你可以用apt-cache search ddd查查有没有这个程序。

基本概念及操作

  • banner的安装及使用

用户及文件权限管理

  • 查看用户

    who 命令其它常用参数
    参数 说明
    -a 打印能打印的全部
    -d 打印死掉的进程
    -m 同am i,mom likes
    -q 打印当前登录用户数及用户名
    -u 打印当前登录用户登录信息
    -r 打印运行等级
  • 创建用户

    退出当前用户跟退出终端一样可以使用 exit 命令或者使用快捷键 Ctrl+d。
  • 用户组
    使用groups命令和cat命令查看用户组信息:

Linux目录结构及文件基本操作

Linux 的目录与 Windows 的目录的区别,或许对于一般操作上的感受来说没有多大不同,但从它们的实现机制来说是完全不同的。 Windows 一直是以存储介质为主的,主要以盘符(C 盘,D 盘...)及分区的来实现文件管理,然后之下才是目录,目录就显得不是那么重要,除系统文件之外的用户文件放在任何地方任何目录也是没有多大关系。所以通常 Windows 在使用一段时间后,磁盘上面的文件目录会显得杂乱无章。然而 UNIX/Linux 恰好相反,UNIX 是以目录为主的,Linux 也继承了这一优良特性。

  • FHS标准
    FHS是指文件系统层次结构标准。FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该要放置设置文件,/bin 与 /sbin 则应该要放置可执行文件等等。第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件、/usr/share 放置共享数据等等。

    另外需要注意的一点是,FHS 是根据以往无数 Linux 用户和开发者的经验总结出来的,并且会维持更新,FHS 依据文件系统使用的频繁与否以及是否允许用户随意改动(注意,不是不能,学习过程中,不要怕这些),将目录定义为四种交互作用的形态,如下表所示:
  • 路径
    在 Linux 里面,使用 cd 命令可以切换目录,使用 . 表示当前目录,.. 表示上一级目录,以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,我们可以使用 ls -a 命令查看隐藏文件), - 表示上一次所在目录,~ 通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
    使用cd ..指令返回上一级目录,使用cd ~或者cd /home/<你的用户名>进入home目录,使用pwd获取当前路径。以"home"目录为起点,分别以绝对路径和相对路径的方式进入/usr/local/bin目录:

环境变量与文件查找

  • 环境变量

    通常我们会涉及到的环境变量有三种:
    当前 Shell 进程私有用户自定义变量,如上面我们创建的 temp 变量,只在当前 Shell 中有效。
    Shell 本身内建的变量。
    从自定义变量导出的环境变量。
    也有三个与上述三种环境变量相关的命令,set,env,export。这三个命令很相似,都可以用于打印相关环境变量,区别在于涉及的是不同范围的环境变量,详情如下:

命令 说明
set 显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量
env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行
export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量

  • 命令的查找路径与顺序
    查看PATH环境变量的内容:

    但是在创建可执行SHELL脚本和使用c语言创建hello world程序的过程中我遇到了一些问题。向脚本添加内容时遇到了如下情况,一直没有找到办法解决。

  • 修改和删除已有变量
    变量的修改有以下几种方式:

变量设置方式 说明
${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据
${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据
${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据
${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串
${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串

  • 数字雨

教材学习中的问题和解决过程

安装cheat时出现问题

解决过程:通过百度发现原因是因为权限不够,在命令前加上sudo就可以解决了

课后作业中的问题和解决过程

在安装cheat的时候 复制cheat的Git库的时候网址出现了问题,导致安装没有完成

感想

这是Linux安装成功后开始入门学习的一周,上课的时候老师讲解了几种常用的命令,但是需要掌握的命令还是很多,所以这周的学习重点在于细致以及耐心的学习大量的命令并且做出相应的操作,而且,在实验的文档中,对于一些复杂的理论概念也有了一个大体的了解,并没有详细的写在博客中。经过这一周的学习,从最开始的生疏到后来的熟练操作,更是深刻的体会到Linux快捷键以及各种命令的方便,给自己的学习生活带来了很大的便捷,特别是在对文件进行管理、查询、位置锁定有了很大的帮助。Linux在我看来,是一个非常有意思的系统,我将会每天通过老师给的学习资源对这个系统慢慢加深了解,相信它会带给我不同的体验。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 2/2 26/26

参考资料

posted on 2016-09-18 23:26  sssssqyk  阅读(213)  评论(4编辑  收藏  举报

导航