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

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

时间:2023-09-19 20:00:44浏览次数:46  
标签:语句 脚本 Shell 信息安全 第三周 笔记 运算符 命令 sh

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

一门程序设计语言具有以下必备的要素和技能:

  • 语法:程序设计语言需要定义一套语法规则,以确定如何组织和编写代码。这包括变量声明、控制流语句(如条件语句和循环语句)、函数定义等。

  • 数据类型:语言需要支持不同的数据类型,如整数、浮点数、字符串、布尔值等。还可能支持更复杂的数据类型,如数组、列表、字典等。

  • 变量和赋值:语言需要提供定义和使用变量的机制,以及赋值操作符来给变量赋值。

  • 运算符:语言需要支持各种运算符,如算术运算符(加减乘除)、比较运算符(等于、不等于、大于、小于等)、逻辑运算符(与、或、非等)等。

  • 控制流:语言需要提供控制程序执行流程的机制,如条件语句(if-else语句)、循环语句(for循环、while循环)等。

  • 函数和模块:语言需要支持函数的定义和调用,以及模块化的编程方式,使得代码可以分成多个模块,提高代码的可读性和可维护性。

  • 异常处理:语言需要提供异常处理机制,以处理程序运行过程中可能出现的错误和异常情况。

Shell脚本中,这些要素和技能也有相应的呈现方式:

  • 语法:Shell脚本使用特定的语法规则,如以#!/bin/bash开头指定解释器、使用变量时无需声明等。

  • 数据类型:Shell脚本中的数据类型主要包括字符串和数字。Shell脚本没有像Python或Java那样提供丰富的内置数据类型。

  • 变量和赋值:Shell脚本使用变量时无需声明,直接使用即可,赋值使用等号(=)。

  • 运算符:Shell脚本支持基本的算术运算符(加减乘除)、比较运算符(等于、不等于、大于、小于等)和逻辑运算符(与、或、非等)。

  • 控制流:Shell脚本使用条件语句(if-else语句)和循环语句(for循环、while循环)来控制程序的执行流程。

  • 函数和模块:Shell脚本可以定义函数,使用function关键字,也可以使用外部的Shell脚本文件作为模块进行代码的复用。

  • 异常处理:Shell脚本可以通过trap命令来捕获和处理异常,也可以使用条件语句来处理错误情况。

第十章 sh编程

sh脚本

  • sh脚本是一个包含sh语句的文本文件,命令行解释程序sh要执行该语句。
  • 创建文件文本mysh,包含:
    #!/bin/bash
    #comment line
    echo hello
    
    使用chmod +x mysh使其可执行,然后运行mysh

sh脚本与C程序

  • sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行。sh脚本不需要main函数,第一个可执行语句是程序的入口点。
  • C语言必须先编译链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件,每个变量必须有一个类型,必须有main()函数。

命令行参数

可使用与运行sh命令完全相同的参数调用sh脚本,如
mysh one two three
参数$0、$1、$2等访问命令行参数

内置变量$#和$*计数并显示命令行参数

  • $# = 命令行参数$1到$n的数量
  • $* = 所有命令行参数,包括$0
    内置变量
  • $S = 执行sh的进程PID
  • $? = 最后一个命令执行的退出状态(如果成功,则为0,否则为非0)

sh变量

内置变量

  • PATH
  • HOME
  • TERM

sh中的引号

sh中的特殊字符,如$、/、*、>、<等,要想把它们用作普通字符,可使用\或单引号来引用它们

sh语句

sh语句包括所有Unix/Linux命令,以及可能的I/O重定向
示例:

ls
ls > outfile
date
cp f1 f2
mkdir newdir
cat < filename

此外,sh编程语言还支持控制sh程序执行的测试条件、循环、case等语句

sh命令

内置命令

  • .file:读取并执行文件
  • break [n]:从最近的第n个嵌套循环中退出
  • cd [dirname]:更换目录
  • continue [n]:重启最近的第n个嵌套循环
  • eval [arg...]:计算一次参数并让sh执行生成的命令。
  • exec [arg...]:通过这个sh执行命令,sh将会退出。
  • exit [n]:使sh退出,退出状态为n。
  • export [var…]:将变量导出到随后执行的命令.
  • trap [arg] [n]:接收到信号n后执行参数。
  • umask [ddd]:将掩码设置为八进制数 ddd 的。
  • wait pid]: 等待进程 pid,如果没有给出pid,则等待所有活动子进程。
  • read命令:当sh执行read命令时,它会等待来自stdin的输入行。
  • 实践:实现一个9*9乘法表
    image
    image

代码已托管

Linux命令

  • echo命令
  • expr命令
  • 管道命令:在sh脚本中经常使用管道作为过滤器
    ps -ax | grep httpd
    cat file | grep word
    
  • 实用命令
    • axk:数据处理程序。
    • cmp:比较两个文件。
    • comm:选择两个排序文件共有的行。
    • grep:匹配一系列文件的模式。
    • diff:找出两个文件的差异。
    • join:通过使用相同的键来连接记录以比较两个文件。
    • sed:流或行编辑命令。
    • sort:排序或合并文件。
    • tail:打印某个文件的最后口行。
    • tr:一对一宇符翻译。
    • uniq:从文件中删除连续重复行。

命令替换

sh控制语句

  • if-else-fi语句
    if [condition]
    then
    statemates
    else
    statements
    fi
    -运算符 -eq -ne -lt -gt
  • if-elif-else-fi语句
    if [condition];then
    commands
    elif [condition2];then
    commands
    else
    commands
    fi
  • for语句
    for VARIABLE in string1 string2 ... stringn
    do
    commands
    done
  • while语句
    while [condition]
    do
    commands
    done
  • until-do语句
    until [$ANS = "give up"]
    do
    echo -n "enter your answer"
    read ANS
    done
  • case 语句
    case $variable in
    pattern1) commands;;
    pattern2) commands;;
    patternn) commands;;
    esac

I/O重定向

当进入sh命令时,我们可以指示sh将I/O重定向到除默认stdin、stdout和sterr以外的文件

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

嵌入文档

sh函数

	func()
	{
	    # function code
	}

sh中的通配符

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

命令分组

使用{}或()对命令进行分组

调试sh脚本

sh脚本可由带有-x选项的子sh运行,以进行调试,如:
bash -x mysh

sh脚本的应用

遇到的问题

  • 重定向的具体作用
  • ChatGpt:
    image
    image
    image
    解决

苏格拉底挑战

  • sh内置命令
    image
    image
    image
    image
    image
    image
    image
    image

  • sh控制语句
    image
    image
    image
    image
    image
    image
    image

标签:语句,脚本,Shell,信息安全,第三周,笔记,运算符,命令,sh
From: https://www.cnblogs.com/wangqi3206/p/17714697.html

相关文章

  • clickhouse学习笔记
    一、query相关1.展示正在处理的请求列表showprocesslist2.杀掉正在处理的查询KILLQUERYWHEREquery_id='2-857d-4a57-9ee0-327da5d60a90'二、修改名称--1.重命名RENAMEDATABASE|TABLE|DICTIONARYnameTOnew_name--2.交换2个表的名称EXCHANGETAB......
  • openGauss学习笔记-74 openGauss 数据库管理-创建和管理视图
    openGauss学习笔记-74openGauss数据库管理-创建和管理视图74.1背景信息当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的......
  • 其他笔记需要学习
    gmockhttp://blog.divebomb.org/2011/07/my-first-c-cmake-googletest-and-googlemock/http://blog.divebomb.org/2011/07/my-first-c-cmake-googletest-and-googlemock/https://qastack.cn/programming/7208070/googletest-how-to-skip-a-testhttps://www.onitroad.com/jc/......
  • Asyncio 协程异步笔记
    协程&asyncio&异步1.协程(coroutine)协程不是计算机提供,而是程序员人为创造。协程(coroutine),也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块互相切换运行。例如:deffunc1():print(1)...print(2)deffu......
  • 联想笔记本电脑,拓展多屏幕,无法找到其他显示器
    1、前言360安全卫士检测提示某文件为病毒文件,于是加进了隔离区。电脑重启后,分辨率突然更改,拓展屏幕也不能用了 严重怀疑驱动破坏,或者显卡硬件故障。2、驱动修复  【显示适配器】,驱动显示“黄三角”标识。选中右键卸载,然后从官网重新下载驱动安装即可我的是联系y900......
  • RK3568开发笔记(十):开发板buildroot固件移植开发的应用Demo,启动全屏显示
    前言  上一篇,移植应用前的通讯接口工作和全屏工作都已经完成了。本篇移植开发的商业应用。<br>交叉编译好应用  (略),参照《RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试》<br>解决全屏标题栏占用问题  交叉......
  • RK3568开发笔记(十):开发板buildroot固件移植开发的应用Demo,启动全屏显示
    前言  上一篇,移植应用前的通讯接口工作和全屏工作都已经完成了。本篇移植开发的商业应用。 交叉编译好应用  (略),参照《RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试》 解决全屏标题栏占用问题......
  • EasyGBS视频在电脑和笔记本里面是怎么样存储的呢
    EasyGBS进行视频录制时,视频数据会被编码成压缩的格式,以便于存储和传输。在电脑和笔记本电脑中,通常使用硬盘驱动器或固态硬盘(SSD)来存储这些视频文件,它通过旋转磁盘和读写头来读取和写入数据。您可以将EasyGBS录制的视频文件保存到硬盘驱动器上的一个指定目录中。硬盘驱动器的容量通......
  • 笔记 | QDialogButtonBox的使用
    QDialogButtonBox的基本用法QDialogButtonBox是Qt的QtWidgets模块中的一个小部件,您可以使用它轻松地添加标准按钮到对话框中。以下是一个基本的使用示例:#include<QDialog>#include<QDialogButtonBox>//创建一个对话框QDialog*dialog=newQDialog(this);//创建一个QDia......
  • 关于成立信息安全小组-范文
    公司各部门:为满足XXX科技有限公司发展需要,保证各项工作的顺利开展,确保网络信息系统安全、平稳运行,经公司管理层会议决定,成立XXX网络信息安全领导小组: 组长:XXXX副组长: XXXX成员:XXXX、XXXX、XXXX小组工作职责:(一)负责制定XXX网络信息安全策略,明确信息安全目标;处置网络信息安全突发事......