信息安全系统设计基础学习总结第二周

 

实验一:

 

 

 

 

 

 

做业css

zyhtml

e前端

http://www.cnblogs.com/zhengwei0712/p/4823168.html

实验二和实验三:

http://www.cnblogs.com/zhengwei0712/p/4823183.html

4、Linux 目录结构及文件基本操做

 

一、Linux 的文件组织目录结构。

Linux 是以树形目录结构的形式来构建整个系统的

Linux 的磁盘是“挂在”(挂载在)目录上的

每个目录不只能使用本地磁盘分区的文件系统,也可使用网络上的文件系统。

FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准)

 

二、相对路径和绝对路径。

知识点:java

进入上一级目录:$ cd ..linux

进入你的“home”目录:$ cd ~       # 或者 cd /home/<你的用户名>nginx

使用 pwd 获取当前路径正则表达式

 

绝对路径,以根"/"目录为起点的完整路径,以你所要到的目录为终点shell

表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。编程

相对路径,相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,ubuntu

表现形式如:usr/local/bin (这里假设你当前目录为根目录)。

 

实验截图:

三、对文件的移动、复制、重命名、编辑等操做。

1.新建

新建空白文件

使用 touch 命令建立空白文件

建立名为 test 的空白文件,由于在其余目录没有权限,因此须要先 cd ~ 切换回用户的/home/shiyanlou 目录:

新建目录

使用 mkdir(make directories)命令能够建立一个空目录,也可同时指定建立目录的权限属性

 

2.复制

复制文件

使用cp(copy)命令复制一个文件或目录到指定目录。

3.删除

删除文件

使用rm(remove files or directories)命令,删除一个文件或目录:

直接使用rm删除会显示一个提示,

想忽略这提示,直接删除文件,可使用-f参数强制删除

删除目录

跟复制目录同样,要删除一个目录,也须要加上-r-R参数

4.移动文件与文件重命名

移动文件

使用mv(move or rename files)命令,移动文件(剪切)。

出现问题:!!!!!

5.查看文件

使用cat,tacnl命令查看文件

cat为正序显示,tac倒序显示。

标准输入输出:当咱们执行一个 shell 命令行时一般会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应被重定向到终端的屏幕,以便咱们能直接看到输出内容。进程将从标准输入文件中获得输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

-n参数显示行号

nl命令,添加行号并打印

经常使用的几个参数:

-b : 指定添加行号的方式,主要有两种:
    -b a:表示不管是否为空行,一样列出行号("cat -n"就是这种方式)
    -b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
    -n ln:在行号字段最左端显示
    -n rn:在行号字段最右边显示,且不加 0
    -n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)

使用moreless命令分页查看文件

tail命令,不得不提的还有它一个很牛的参数-f,这个参数能够实现不停地读取某个文件的内容并显示。这可以让咱们动态查看日志起到实时监视的做用

6.查看文件类型

一般使用file命令能够查看文件的类型

7.编辑文件

专门的命令行编辑器好比(emacs,vim,nano)

做业:

 

实验5、环境变量与文件查找

1、环境变量

使用declare命令建立一个变量名为 tmp 的变量:

取变量的值,使用echo命令和$符号($符号用于表示引用一个变量的值,初学者常常会忘记输入):

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

环境变量就是做用域比自定义变量要大

Shell 的环境变量做用于自身和它的子进程。

一般咱们会涉及到的环境变量有三种:

  • 当前 Shell 进程私有用户自定义变量,如上面咱们建立的 temp 变量,只在当前 Shell 中有效。
  • Shell 自己内建的变量。
  • 从自定义变量导出的环境变量。

也有三个与上述三种环境变量相关的命令,setenvexport。这三个命令很类似,均可以用于打印相关环境变量,区别在于涉及的是不一样范围的环境变量,详见下表:

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

3.命令的查找路径与顺序

 

4.添加自定义路径到“PATH”环境变量

每一个用户的 home 目录中有一个 Shell 每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。zsh 的配置文件是.zshrc,相应 Bash 的配置文件为.bashrc

5.修改和删除已有变量

变量修改

变量的修改有如下几种方式

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

好比要修改咱们前面添加到 PATH 的环境变量。

2、搜索文件

与搜索相关的命令经常使用的有以下几个whereis,which,find,locate

whereis只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s)。若是想要得到更全面的搜索结果可使用locate命令。

  • which小而精

which自己是 Shell 内建的一个命令,咱们一般使用which来肯定是否安装了某个指定的软件,由于它只从PATH环境变量指定的路径中去搜索命令:

  • find精而细

find应该是这几个命令中最强大的了,它不但能够经过文件类型、文件名进行查找并且能够根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。

注意 find 命令的路径是做为第一个参数的, 基本命令格式为 find [path] [option] [action]

 

做业:

《黑客帝国》电影里满屏幕代码的“数字雨”,在 Linux 里面你也能够轻松实现这样的效果

 

 

 

实验6、文件打包与压缩

实验介绍

Linux 上经常使用的 压缩/解压 工具,介绍了 zip,rar,tar 的使用。

1、文件打包和解压缩

1.zip压缩打包程序

第一行命令中,-r参数表示递归打包包含子目录的所有内容,-q参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。后面使用du命令查看打包后文件的大小

2.使用unzip命令解压缩zip文件

 

不想解压只想查看压缩包的内容你可使用-l参数

使用-O(英文字母,大写o)参数指定编码类型:

3.rar打包压缩命令

  • 从指定文件或目录建立压缩包或添加文件到压缩包:
  • 使用a参数添加一个目录到一个归档文件中,若是该文件不存在就会自动建立。

做业:天冷的时候,要是有个火炉就行了。

实验7、文件系统操做与磁盘管理

1、简单文件系统操做

1.查看磁盘和目录的容量

使用 df 命令查看磁盘的容量

 

2、简单的磁盘管理

1.建立虚拟磁盘

dd 命令简介

使用 mount 命令挂载磁盘到目录树

用 losetup 命令创建镜像与回环设备的关联

而后再使用mkfs格式化各分区

做业

cowsay命令,可让你在终端里以一种动物说话的形式打印出一段话。

 

实验8、命令执行顺序控制与管道

实验介绍

顺序执行、选择执行、管道、cut 命令、grep 命令、wc 命令、sort 命令等

1、命令执行顺序的控制

1.顺序执行多条命令

2.有选择的执行命令

&&就是用来实现选择性执行的,它表示若是前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回0则执行后面的,不然不执行,你能够从$?环境变量获取上一次命令的返回结果

2、管道

管道又分为匿名管道和具名管道

在使用一些过滤程序时常常会用到的就是匿名管道,在命令行中由|分隔符表示,|在前面的内容中咱们已经屡次使用到了。具名管道简单的说就是有名字的管道,一般只会在源程序中用到具名管道。下面咱们就将经过一些经常使用的可使用管道的"过滤程序"来帮助你熟练管道的使用。

cut 命令,打印每一行的某一字段

grep 命令,在文本中或 stdin 中查找匹配字符串

wc 命令,简单小巧的计数工具

.sort 排序命令

uniq 去重命令 uniq命令能够用于过滤或者输出重复行。

实验9、简单的文本处理

1、经常使用的文本处理命令

2、文本处理命令

1.tr 命令

tr 命令能够用来删除一段文本信息中的某些文字。或者将其进行转换。

2.col 命令

col 命令能够将Tab换成对等数量的空格建,或反转这个操做。

3.join命令

用于将两个文件中包含相同内容的那一行合并在一块儿。

4.paste命令

paste这个命令与join 命令相似,它是在不对比数据的状况下,简单地将多个文件合并一块儿,以Tab隔开。

实验10、数据流重定向

1、数据流重定向

1.简单的重定向

注意不要将管道和重定向混淆,管道默认是链接前一个命令的输出到下一个命令的输入,而重定向一般是须要一个文件来创建两个命令的链接

2.标准错误重定向

3.使用tee命令同时重定向到多个文件

除了将须要将输出重定向到文件以外也须要将信息打印在终端

4.永久重定向

exec命令的做用是使用指定的命令替换当前的 Shell,及使用一个进程替换当前进程,或者指定新的重定向

5.建立输出文件描述符

使用exec命令能够建立新的文件描述符

6.关闭文件描述符

7.彻底屏蔽命令的输出

在 Linux 中有一个被成为“黑洞”的设备文件,因此导入它的数据都将被“吞噬”。

在类 UNIX 系统中,/dev/null,或称空设备,是一个特殊的设备文件,它一般被用于丢弃不须要的输出流,或做为用于输入流的空文件,这些操做一般由重定向完成。读取它则会当即获得一个EOF。

8.使用 xargs 分割参数列表

xargs 是一条 UNIX 和类 UNIX 操做系统的经常使用命令。它的做用是将参数列表转换成小块分段传递给其余命令,以免参数列表过长的问题。

 

 

实验11、正则表达式基础

则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法

一个正则表达式一般被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。

选择

|竖直分隔符表示选择,例如"boy|girl"能够匹配"boy"或者"girl"

数量限定

数量限定除了咱们举例用的*,还有+加号,?问号,.点号,若是在一个模式中不加数量限定符则表示出现一次且仅出现一次:

优先级

优先级为从上到下从左到右,依次下降:

 

rep命令用于打印输出文本中匹配的模式串,它使用正则表达式做为模式匹配的条件。grep支持三种正则表达式引擎,分别用三个参数指定:

参数 说明
-E POSIX扩展正则表达式,ERE
-G POSIX基本正则表达式,BRE
-P Perl正则表达式,PCRE

使用正则表达式

 

 

正则表达式基础

实验介绍

虽然咱们这一节的标题是正则表达式,但实际这一节实验只是介绍grepsedawk这三个命令,而正则表达式做为这三个命令的一种使用方式(命令输出中能够包含正则表达式)。正则表达式自己的内容不少,要把它说明清楚须要单独一门课程来实现,不过咱们这一节中涉及到的相关内容一般也可以知足不少状况下的需求了。

想要更深刻地学习使用正则表达式,在这里 正则表达式基础


sed操做举例

咱们先找一个用于练习的文本文件:

$ cp /etc/passwd ~ 

打印指定行

# 打印2-5行 $ nl passwd | sed -n '2,5p' # 打印奇数行 $ nl passwd | sed -n '1~2p' 

 

行内替换

# 将输入文本中"shiyanlou" 全局替换为"hehe",并只打印替换的那一行,注意这里不能省略最后的"p"命令 $ sed -n 's/shiyanlou/hehe/gp' passwd 

注意: 行内替换能够结合正则表达式使用。

行间替换

$ nl passwd | grep "shiyanlou" # 删除第21行 $ sed -n '21c\www.shiyanlou.com' passwd 

 

关于sed命令就介绍这么多,你若是但愿了解更多sed的高级用法,你能够参看以下连接:

4、awk文本处理语言

看到上面的标题,你可能会感到惊异,难道咱们这里要学习的是一门“语言”么,确切的说,咱们是要在这里学习awk文本处理语言,只是咱们并不会在这里学习到比较完整的关于awk的内容,仍是由于前面的缘由,它太强大了,它的应用无处不在,咱们没法在这里以简短的文字描述面面俱到,若是你有目标成为一个linux系统管理员,确实想学好awk,你一不用担忧,实验楼会在以后陆续上线linux系统管理员的学习路径,里面会有单独的关于正则表达式,awk,sed等相关课程,敬请期待吧。下面的内容,咱们就做为一个关于awk的入门体验章节吧,其中会介绍一些awk的经常使用操做。

1.awk介绍

AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一.其名称得自于它的创始人Alfred Aho(阿尔佛雷德·艾侯)、Peter Jay Weinberger(彼得·温伯格)和Brian Wilson Kernighan(布莱恩·柯林汉)姓氏的首个字母.AWK程序设计语言,三位建立者已将它正式定义为“样式扫描和处理语言”。它容许您建立简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其余的功能。最简单地说,AWK是一种用于处理文本的编程语言工具。

在大多数linux发行版上面,实际咱们使用的是gawk(GNU awk,awk的GNU版本),在咱们的环境中ubuntu上,默认提供的是mawk,不过咱们一般能够直接使用awk命令(awk语言的解释器),由于系统已经为咱们建立好了awk指向mawk的符号连接。

$ ll /usr/bin/awk 

 

nawk: 在 20 世纪 80 年代中期,对 awk语言进行了更新,并不一样程度地使用一种称为 nawk(new awk) 的加强版本对其进行了替换。许多系统中仍然存在着旧的awk 解释器,但一般将其安装为 oawk (old awk) 命令,而 nawk 解释器则安装为主要的 awk 命令,也可使用 nawk 命令。Dr. Kernighan 仍然在对 nawk 进行维护,与 gawk 同样,它也是开放源代码的,而且能够免费得到; gawk: 是 GNU Project 的awk解释器的开放源代码实现。尽管早期的 GAWK 发行版是旧的 AWK 的替代程序,但不断地对其进行了更新,以包含 NAWK 的特性; mawk 也是awk编程语言的一种解释器,mawk遵循 POSIX 1003.2 (草案 11.3)定义的 AWK 语言,包含了一些没有在AWK 手册中提到的特点,同时 mawk 提供一小部分扩展,另外听说mawk是实现最快的awk

2.awk的一些基础概念

awk全部的操做都是基于pattern(模式)—action(动做)对来完成的,以下面的形式:

$ pattern {action} 

你能够看到就如同不少编程语言同样,它将全部的动做操做用一对{}花括号包围起来。其中pattern一般是是表示用于匹配输入的文本的“关系式”或“正则表达式”,action则是表示匹配后将执行的动做。在一个完整awk操做中,这二者能够只有其中一个,若是没有pattern则默认匹配输入的所有文本,若是没有action则默认为打印匹配内容到屏幕。

awk处理文本的方式,是将文本分割成一些“字段”,而后再对这些字段进行处理,默认状况下,awk以空格做为一个字段的分割符,不过这不是固定了,你能够任意指定分隔符,下面将告诉你如何作到这一点。

3.awk命令基本格式

awk [-F fs] [-v var=value] [-f prog-file | 'program text'] [file...] 

其中-F参数用于预先指定前面提到的字段分隔符(还有其余指定字段的方式) ,-v用于预先为awk程序指定变量,-f参数用于指定awk命令要执行的程序文件,或者在不加-f参数的状况下直接将程序语句放在这里,最后为awk须要处理的文本输入,且能够同时输入多个文本文件。如今咱们仍是直接来具体体验一下吧。

4.awk操做体验

先用vim新建一个文本文档

$ vim test 

包含以下内容:

I like linux www.shiyanlou.com 
  • 使用awk将文本内容打印到终端
# "quote>" 不用输入 $ awk '{ > print > }' test # 或者写到一行 $ awk '{print}' test 

 

说明:在这个操做中我是省略了patter,因此awk会默认匹配输入文本的所有内容,而后在"{}"花括号中执行动做,即print打印全部匹配项,这里是所有文本内容

  • 将test的第一行的每一个字段单独显示为一行
$ awk '{ > if(NR==1){ > print $1 "\n" $2 "\n" $3 > } else { > print} > }' test # 或者 $ awk '{ > if(NR==1){ > OFS="\n" > print $1, $2, $3 > } else { > print} > }' test 

 

说明:你首先应该注意的是,这里我使用了awk语言的分支选择语句if,它的使用和不少高级语言如C/C++语言基本一致,若是你有这些语言的基础,这里将很好理解。另外一个你须要注意的是NROFS,这两个是awk内建的变量,NR表示当前读入的记录数,你能够简单的理解为当前处理的行数,OFS表示输出时的字段分隔符,默认为" "空格,如上图所见,咱们将字段分隔符设置为\n换行符,因此第一行本来以空格为字段分隔的内容就分别输出到单独一行了。而后是$N其中N为相应的字段号,这也是awk的内建变量,它表示引用相应的字段,由于咱们这里第一行只有三个字段,因此只引用到了$3。除此以外另外一个这里没有出现的$0,它表示引用当前记录(当前行)的所有内容。

  • 将test的第二行的以点为分段的字段换成以空格为分隔
$ awk -F'.' '{ > if(NR==2){ > print $1 "\t" $2 "\t" $3 > }}' test # 或者 $ awk ' > BEGIN{ > FS="." > OFS="\t" # 若是写为一行,两个动做语句之间应该以";"号分开 > }{ > if(NR==2){ > print $1, $2, $3 > }}' test 

实验12、Linux 下软件安装

实验介绍

1、Linux 上的软件安装

一般 Linux 上的软件安装主要有三种方式:

  • 在线安装
  • 从磁盘安装deb软件包
  • 从二进制软件包安装
  • 从源代码编译安装

2. apt 包管理工具介绍

APT是Advance Packaging Tool(高级包装工具)的缩写,是Debian及其派生发行版的软件包管理器,APT能够自动下载,配置,安装二进制或者源代码格式的软件包,所以简化了Unix系统上管理软件的过程。APT最先被设计成dpkg的前端,用来处理deb格式的软件包。如今通过APT-RPM组织修改,APT已经能够安装在支持RPM的系统管理RPM包。这个包管理器包含以 apt- 开头的的多个工具,如 apt-get apt-cache apt-cdrom 等,在Debian系列的发行版中使用。

 

遇到的问题和心得体会:

1.在操做过程当中,有道做业是创建一个opt/forloutest的文件,而我创建了一个

OPT文件,cd OPT,却显示not a directory,经过阅读《linux嵌入式》这本书使用mkdir建立目录,多是由于OPT文件的存在,并不能建立新的目录

与网上得搜索,了解应创建OPT文件夹,而不是文件。

2.同上,在创建fortest这个文件的时候,不当心按了两次touch fortest,列出文件的时候,发现建了两个forloutest文件,修改访问权限得时候,哪怕修改两次,被修改得也只有一个文件,另外一个文件修改不了,并且使用rm删除,好像也没有用。

体会:有时候按照实验指导作,可是并非每一步都是告诉咱们得,因此作实验以前最好要结合课本的知识。并且作实验的时候,以为本身要学的还有不少。

相关文章
相关标签/搜索