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

教材学习内容总结

这周主要学习任务是在实验楼里学习linux系统的使用。

以下是我的总结:

基础命令

  • 快捷键

  • Ctrl+c键来强行终止当前程序,单进程出现问题,程序卡死时可以使用它来终止操作。

  • Ctrl+d 键盘输入结束或退出终端

  • Ctrl+s 暂定当前程序,暂停后按下任意键恢复运行

  • Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg

  • Ctrl+a 将光标移至输入行头,相当于Home键

  • Ctrl+e 将光标移至输入行末,相当于End键

  • Ctrl+k 删除从光标所在位置到行末

  • Alt+Backspace 向前删除一个单词

  • Shift+PgUp 将终端显示向上滚动

  • Shift+PgDn 将终端显示向下滚动

  • man的使用窍门

  • 通常 man 手册中的内容很多,你可能不太容易找到你想要的结果,不过幸运的是你可以在 man 中使用搜索,/<你要搜索的关键字>;

  • 查找到后你可以使用n键切换到下一个关键字所在处,shift+n为上一个关键字所在处。

  • 使用Space(空格键)翻页,Enter(回车键)向下滚动一行,或者使用j,k(vim编辑器的移动键)进行向前向后滚动一行。

  • 按下h键为显示使用帮助(因为man使用less作为阅读器,实为less工具的帮助),按下q退出。

  • 还可以使用info命令,不过通常使用man就足够了。如果你知道某个命令的作用,只是想快速查看一些它的某个具体参数的作用,那么你可以使用--help参数

  • find查找一个文件在系统中的什么位置,locate是神速版本的find。

  • help 命令只能用于显示内建命令的帮助信息,如果是外部命令,可以使用 <命令> --help

  • 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查查有没有这个程序。

  • cheat安装
    20145315 《信息安全系统设计基础》第1周学习总结
20145315 《信息安全系统设计基础》第1周学习总结

用户管理

  • su 可以切换到用户user,执行时需要输入目标用户的密码,sudo 可以以特权级别运行cmd命令,需要当前用户属于sudo组,且需要输入当前用户密码。
  • 退出当前用户跟退出终端一样可以使用 exit 命令或者使用快捷键 Ctrl+d。
  • 使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令。

文件管理

  • ls 命令用来列出并显示当前目录下的文件

  • Linux 里面一切皆文件,正因为这一点才有了设备文件,还有 socket(网络套接),和 pipe (管道),链接文件。

  • 修改文件权限

     •方式一:二进制数字表示
    
     •方式二:加减赋值操作
    
    
     $ chmod go-rw iphone
    

'g''o'还有'u',分别表示group,others,user,'+','-' 就分别表示增加和去掉相应的权限。

作业:
添加一个用户loutest,使用sudo创建文件/opt/forloutest,设置成用户loutest可以读写。截图并把操作过程写入实验报告。
20145315 《信息安全系统设计基础》第1周学习总结
20145315 《信息安全系统设计基础》第1周学习总结

目录结构

UNIX 是以目录为主的,Linux 也继承了这一优良特性。 Linux 是以树形目录结构的形式来构建整个系统的,可以理解为一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。

  • 使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录。
  • 以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件)。
    • 表示上一次所在目录,~ 通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
  • 目录操作
    20145315 《信息安全系统设计基础》第1周学习总结
20145315 《信息安全系统设计基础》第1周学习总结

Linux 文件的基本操作

  • touch 命令创建空白文件:先 cd ~ 切换回用户,然后touch test.
  • 使用 mkdir(make directories)命令可以创建一个空目录;使用 -p 参数,同时创建父目录(如果不存在该父目录)。
  • 使用cp(copy)命令复制一个文件或目录到指定目录;复制目录需要加上-r或者-R参数,表示递归复制。
  • 使用rm(remove files or directories)命令,删除一个文件或目录;-f参数强制删除;要删除一个目录,也需要加上-r或-R参数.
  • 使用mv(move or rename files)命令,移动文件
  • 重命名 :mv 旧的文件名 新的文件名
  • 使用cat,tac和nl命令查看文件
  • more和less命令分页查看文件,使用Enter键向下滚动一行,使用Space键向下滚动一屏,按下h显示帮助,q退出。

环境变量

  • 用declare命令创建一个变量

  • 使用=号赋值运算符为变量 tmp 赋值

  • 使用echo命令和$符号,读取变量的值 echo $tmp

  • 变量名只能是英文字母,数字或者下划线,且不能以数字作为开头。

  • 打印环境变量

  • set 显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量

  • env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行

  • export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量

  • 关于环境变量,可以简单的理解成在当前进程的子进程是否有效,有效则为环境变量,否则不是

  • 添加自定义路径到“PATH”环境变量 PATH=$PATH:/home/shiyanlou/mybin

  • echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
    把路径信息直接添加到zsh的配置文件.zshrc中

  • 修改变量:

  • ${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据

  • ${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据

  • ${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据

  • ${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据

  • ${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串

  • ${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串

  • 可以使用unset命令删除一个环境变量:

搜索文件

  • whereis简单快速
  • locate快而全
  • which小而精 (确定是否已经安装了某个软件)
  • find精而细

系统操作

  • du 命令查看目录的容量
  • df 命令查看磁盘的容量

crontab 的认识与使用

crontab用来设置周期性被执行的指令,通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周的任意组合。

C语言

  • 创建一个 C 语言"hello world"程序:
    $ vim hello_world.c
#include <stdio.h>

int main(void)

{
    printf("hello world!
");

    return 0;
}
  • 使用 gcc 生成可执行文件:
    $ gcc -o hello_world hello_world.c

  • $ ./hello_world

文件压缩与打包

  • 使用zip打包文件夹
  • 用unzip命令解压缩zip文件 注意:unzip -O GBK 中文压缩文件.zip
  • rar打包压缩命令
  • tar打包工具
  • 创建一个 tar 包:
    $ tar -cf shiyanlou.tar ~

VIM

  • vim启动进入普通模式,处于插入模式或命令行模式时只需要按Esc或者Ctrl+[(这在vim课程环境中不管用)即可进入普通模式。
  • 普通模式中按i(插入)或a(附加)键都可以进入插入模式,普通模式中按:进入命令行模式。
  • 命令行模式中输入wq回车后保存并退出vim。

普通模式

  • h 左
  • l 右(小写L)
  • j 下
  • k 上
  • w 移动到下一个单词
  • b 移动到上一个单词

进入插入模式

  • i 在当前光标处进行编辑

  • I 在行首插入

  • A 在行末插入

  • a 在光标后插入编辑

  • o 在当前行后插入一个新行

  • O 在当前行前插入一个新行

  • cw 替换从光标所在位置后到一个单词结尾的字符

  • 保存文档

    从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下
    
  • 以下为几种退出方式:

  • :q! 强制退出,不保存( 普通模式进入命令行模式再退出)

  • :q 退出

  • :wq! 强制保存并退出

  • :w <文件路径> 另存为

  • :saveas 文件路径 另存为

  • :x 保存并退出

  • :wq 保存并退出

  • 普通模式下输入Shift+zz即可保存退出vim

  • 删除文本

  • x 删除游标所在的字符

  • X 删除游标所在前一个字符

  • Delete 同x

  • dd 删除整行

  • dw 删除一个单词(不适用中文)

  • d$或D 删除至行尾

  • d^ 删除至行首

  • dG 删除到文档结尾处

  • d1G 删至文档首部

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

脚本程序 hello_shell.sh无法运行
20145315 《信息安全系统设计基础》第1周学习总结
20145315 《信息安全系统设计基础》第1周学习总结

没解决,C语言程序可以执行,脚本语言不行,打算下周看一下高级Bash脚本编程指南

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

  • 请在虚拟机中安装DDD软件(其他软件)
    sudo update
    sudo apt-get install DDD
    20145315 《信息安全系统设计基础》第1周学习总结
20145315 《信息安全系统设计基础》第1周学习总结

  • 请演示怎么判断DDD软件能不能安装
    先搜索是否安装 sudo apt-cache search

  • 请查找系统中50M以上的文件
    find . -size +50M -type f

  • 请查找系统中两天前修改过的且小于5M的文件
    find . -size -5M -type f -mtime +2d

  • 请问如何查找操作系统的信息
    unname -a #

  • 请查找当前目录下所有*.c文件中哪个文件中包含main函数
    man -k *.c

  • 请建立一个目录,里面建立两个子文目录,如何一条命令删除三个目录?
    rm -r <目录>

  • 如何把一个目录及子目录拷贝到自己的主目录中
    cp -r <这个目录> ..

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/200 2/2 20/20
第二周 0/500 0/4 0 /38
第三周 0/1000 0/7 0 /60
第四周 0/1300 0/9 0/90

参考资料