zoukankan      html  css  js  c++  java
  • 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安装

    用户管理

    • 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可以读写。截图并把操作过程写入实验报告。

    目录结构

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

    • 使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录。
    • 以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件)。
      • 表示上一次所在目录,~ 通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
    • 目录操作

    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无法运行

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

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

    • 请在虚拟机中安装DDD软件(其他软件)
      sudo update
      sudo apt-get install DDD

    • 请演示怎么判断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

    参考资料

  • 相关阅读:
    Problem C: 时间类的常量
    Problem B: 时间类的错误数据处理
    Problem A: 时间类的拷贝和整体读写
    Problem B: 平面上的点——Point类 (IV)
    Problem C: 平面上的点——Point类 (V)
    Problem A: 平面上的点——Point类 (III)
    中间的数(若已经排好序)
    软件工程概论团队结组
    软件工程个人作业04 子数组循环数组
    软件工程个人作业03
  • 原文地址:https://www.cnblogs.com/5315hejialei/p/5882290.html
Copyright © 2011-2022 走看看