首页 > 其他分享 >《信息安全系统设计与实现学习笔记3》

《信息安全系统设计与实现学习笔记3》

时间:2022-09-18 22:44:10浏览次数:82  
标签:语句 ... 文件 信息安全 笔记 学习 命令 sh 参数

一、知识点归纳以及自己最有收获的内容

1、知识点归纳

总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?

程序设计语言有3个方面的因素,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者;语义表示程序的含义,亦即表示按照各种方法所表示的各个记号的特定含义,但不涉及使用者。语言基本成分不外4种。数据成分——用以描述程序中所涉及的数据;运算成分——用以描述程序中所包含的运算;控制成分——用以表达程序中的控制构造、传输成分。这些要素具体体现在sh编程中的各类命令当中。

第10章 sh编程

1、sh 脚本是一个包含sh 语句的文本文件,命令解释程序sh要执行该语句。sh是一个解释程序,逐行读取sh脚本文件并执行。
2、命令行参数
在sh脚本中,可以通过位置参数$0、$1、$2等访问命令行参数。其中特殊字符$表示替换,如果需要使用$字符,需加上单引号或者反引号\。
(1)位置参数

$n(if n > 9, add {})
$0是程序名本身,其余是程序的参数。

(2)内置变量

$*=所有命令行参数,包括$0
$S=执行sh的进程PID
$?=最后一个命令执行的退出状态(成功为0,否则为非0)

3、特殊符号

~:家目录
!:执行历史命令
$:变量中取内容符
&:后台执行
;:一行执行多个命令,以此为间隔
|:管道符``:反引号,命令中执行命令

4、sh命令
(1)内置命令

.file:读取并执行文件。
break [n]:从最近的第n个嵌套循环中退出。
cd [dirname]: 更换目录。
continue[n]:重启最近的第n个嵌套循环。
eval [arg...]:计算一次参数并让sh执行生成的命令。
exec [arg...]:通过这个sh执行命令,sh将会退出。
exit [n]:使sh退出,退出状态为n。
export [var…]:将变量导出到随后执行的命令.
read [var...]:从stdin 中读取一行并为变量赋值。
set [arg...]:在执行环境中设置变量。
shift:将位置参数$2 $3...重命名为 $1 $2...。
trap [arg] [n]:接收到信号n后执行参数。
umask [ddd]:将掩码设置为八进制数 ddd 的。
wait pid]: 等待进程 pid,如果没有给出pid,则等待所有活动子进程。

(2)Linux命令

echo命令:将参数字符串作为行回显到stdout。expr命令:间接更改sh变量的值。
管道命令:作为过滤器。
实用命令:
axk:数据处理程序。
cmp:比较两个文件。comm:选择两个排序文件共有的行。
grep:匹配一系列文件的模式。
diff:找出两个文件的差异。join:通过使用相同的键来连接记录以比较两个文件。
sed:流或行编辑命令。sort:排序或合并文件。tail:打印某个文件的最后口行。tr:一对一宇符翻译。uniq:从文件中删除连续重复行。

5、sh控制语句
sh支持多种控制语句,可类比C语言的语句。
(1)if-else-if语句

if condition1
    then
        command1
    elif condition2 
    then 
        command2
    else
        commandN
    fi

(2)for语句

for var in item1 item2 ... itemN
    do
        command1
        command2
        ...
        commandN
    done

命令行格式:

for var in item1 item2 ... itemN; do command1; command2… done;

(3)while语句

while condition
        do
            command
        Done

(4)untill-do语句
until 循环执行一系列命令直至条件为 true 时停止。

until condition
    do
        command
    done

(5)case语句

case 值 in
    模式1)
        command1
        command2
        ...
        commandN
        ;;
    模式2)
        command1
        command2
        ...
        commandN
        ;;
    esac

(6)continue和break语句

  • break命令允许跳出所有循环(终止执行后面的所有循环)。
  • continue命令不会跳出所有循环,仅仅跳出当前循环。

6、运算

eq:等于(equal)
gt:大于(greater)
lt:小于(less)
ge:大于或等于(greater or equal)
le:小于或等于(less or equal)
ne:不等于(not equal)
文件运算
d:检查文件是否存在且为目录
e:检查文件是否存在
f:检查文件是否存在且为文件
r:文件是否可读
s:不为空
w:是否可写
x:可执行
O:是否被当前用户拥有
G:默认用户组为当前用户组
字符串比较运算
==:等于
!=:不等于
-n:字符串长度是否大于0
z:字符串长度是否为0
逻辑运算
&&
||
!
赋值运算
=

7、I/O重定向

 >file:stdout转向文件,如果文件不存在,将会创建文件。
 >>file:stdout追加到文件。
 <file:将文件用作stdin;文件必须存在并具有r权限。
 <<word:从“here”文件中获取输入,直到只包含“word”的行。

8、sh函数
(1)sh函数的定义

func()
{
# function code
}

(2)通配符

  • 星号(*)通配符:可扩展到当前目录中的所有文件。
  • ?通配符:查询某文件名中的字符。
  • []通配符:查询文件名中一对[]中的字符。

(3)调试脚本
sh脚本由带有-x选项的子sh运行以进行调试。
子sh将在执行命令之前显示要执行的每个sh命令,包括变量和命令替换。它允许用户跟踪命令执行。如果出现错误,sh将在错误行上停止并显示错误消息。


自己最有收获的内容

通过sh编程语言的学习,加上与之前学习的python、C语言、JAVA进行比较,我进一步掌握了语言间的通性,比如输入输出方面或许不同的语言有不同的语句,sh有read与echo,C语言有scanf与printf等,但它们一定会有输入与输出。这些共性的地方才是我们掌握一门语言最好入手的地方。


二、问题与解决思路

(1)在预习时对管道这一概念比较模糊,不知道在sh中起什么作用。

解决方法:
网上查询了相关资料:管道的作用是提供一个通道,将上一个程序的标准输出重定向到下一个程序作为下一个程序的标准输入。
通常使用管道的好处是一方面形式上简单,另一方面其执行效率要远高于使用临时文件。

一些命令对管道的应用

1.选取命令:cut,grep

  • cut 选取命令,以行为单位处理信息。
1.#cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]
2. 
3.#参数
4.-b 以字节为单位进行分割。这些字节忽略多字节字符边界,除非指定-n参数
5.-c  以字符为单位进行分割
6.-d  自定义分隔符,默认为制表符
7.-f  依据-d参数的分割字符将一段信息分割为数段,用-f取出第几段的意思
8.-n  取消分割多字节字符,仅和-b标志一起使用。如果字符的最后一个字节落在由-b标志的List参数指示的</br>范围之内,该字符将被写出,否则该字符被排除
  • grep 前面的cut是取出一行中的某些字符,而grep是来筛选某一行存在你需要的信息,则把该行拿出来

2.排序命令:sort, wc,uniq

  • Sort进行排序,根据不同的关键词。因为可能是字符排序,所以这里需要确定你的系统的编码,最好是LANG=C
    # sort [-fbMnrtuk] [file or stdin]
    参数:
    -f  忽略大小写
    -b 忽略最前面的空格符部分
     
    -M 以月份名字进行排序(默认是以文本类型进行排序)
    -n  使用纯数字进行排序
    -r  反向排序
     
    -u  就是uniq,相同的数据只出现一行
    -t   分隔符,默认以 [tab]  键为分割
    -k  以那个区间来进行排序的意思


  • uniq 相当于sort的 -u 选项 取出一些重复的数据。
    # uniq [-ic]
     
    -i 忽略大小写
    -c 对重复信息计数
  • wc 计数工具
    wc [-lwm]
    参数:
    -l   仅列出多少行
    -w  仅列出多少字(英文单词)
    -m  多少字符



三、实践内容与截图

标签:语句,...,文件,信息安全,笔记,学习,命令,sh,参数
From: https://www.cnblogs.com/moonyecho/p/16706102.html

相关文章

  • 2022-2023-1 20221312 《计算机基础与程序设计》第三周学习总结
    班级链接:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)作业要求:2022-2023-1《计算机基础与程序设计》教学进程-娄......
  • 第十章学习笔记
    第十章的主要内容是sh编程,包括以下几个方面:sh脚本和不同版本sh比较了sh脚本和C程序sh变量、sh语句、sh内置命令、常规系统命令和命令替换sh控制语句sh函数编写以及使......
  • 第三周学习笔记.
    第十章sh编程概要阐述了sh脚本和不同版本的sh;比较了sh脚本与C程序,并指出了解释语言和编译语言的区别;如何编写sh脚本,包括sh变量、sh语句、sh内置命令、常规系统命令和......
  • CSS笔记
    ①CSS引入方式1)(最常用)在<head>元素下引入:【<link rel="stylesheet"href="xx.css">】3)在CSS文件中导入【@importurl(xx.css)】(语句需写在css文件的开头)3)在style......
  • 第十章笔记
     ......
  • 20201306吴龙灿第十章学习笔记
    知识点归纳这一章的主要内容包含了sh编程的绝大部分内容。但是在此之前,还是要强调一下诸如Python、C、Java这些程序语言的特点。1.Python(一)Python是什么?Python是一......
  • 2022-2023-1 20221408《计算机基础与程序设计》第三周学习总结
    这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业要求在哪里:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03这个作业的目标......
  • Redis详细教程笔记
    1.目录2.待更新:集群环境搭建、订阅发布、哨兵机制、主从复制、缓存雪崩与穿透3.笔记链接:https://t.wss.ink/f/9bktugzrk5n复制链接到浏览器打开(过期联系:QQ:8108062......
  • 软件需求分析与系统设计笔记
    软件需求分析与系统设计笔记简介什么是软件?软件是计算机系统中与硬件(hardware)相互依存的另一部分,是程序、支持程序运行的数据以及与程序有关的文档的完整集合。......
  • 20201322陈俊池学习笔记3
    第十章sh编程一、知识点归纳10.1sh脚本sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。创建mysh: #!/bin/bash #commentline echohello使......