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

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

时间:2023-09-24 16:01:36浏览次数:35  
标签:语句 脚本 Shell 变量 信息安全 第三周 笔记 命令 sh

一门程序语言必备的要素和技能

  • 语法和语义:了解程序设计语言的语法规则和语义约定,包括变量声明、语句结构、运算符、条件语句、循环结构等。掌握正确的语法和语义可以编写有效且不会造成语法错误的程序。
  • 数据类型:了解不同数据类型的概念和用法,例如整数、浮点数、字符串、布尔值等。熟悉数据类型的操作和转换方法,以便正确地处理和操作数据。
  • 变量和赋值:掌握变量的定义、命名规则和作用域,能够进行变量赋值和引用。理解变量的概念和用途,能够正确地使用变量存储和操作数据。
  • 控制结构:熟悉程序控制结构,如条件语句(if-else、switch)、循环结构(for、while)和跳转语句(break、continue)。能够通过控制结构控制程序的流程和执行顺序。
  • 函数和模块化:理解函数的概念和作用,能够定义和调用函数,实现代码的模块化和重用。了解如何传递参数和返回值,解决程序中的复杂问题。
  • 异常处理:了解异常的概念和处理方法,能够捕获和处理程序中的异常情况。熟悉异常处理机制,以保证程序的稳定性和可靠性。
  • 数据结构和算法:了解常见的数据结构(如数组、链表、栈、队列)和算法(如排序、查找、递归),能够选择合适的数据结构和算法来解决问题。掌握基本的数据结构和算法知识可以提高程序的效率和性能。
  • 调试和测试:具备调试和测试程序的能力,能够发现并修复程序中的错误和缺陷。熟练使用调试工具和技术,以验证程序的正确性和可靠性。

这些要素和技能在shell脚本中的呈现

  • 语法和语义:需要了解Shell脚本的语法规则和语义约定,包括变量声明、命令执行、条件语句、循环结构等。掌握正确的语法和语义可以编写有效且不会造成语法错误的Shell脚本。
  • 数据类型:Shell脚本的数据类型相对简单,主要包括字符串、整数和布尔值。熟悉这些数据类型的操作和转换方法,以便正确地处理和操作数据。
  • 变量和赋值:在Shell脚本中,使用变量需要进行变量声明和赋值操作。理解变量的概念和用途,能够正确地使用变量存储和引用数据。
  • 控制结构:掌握Shell脚本中的控制结构,如条件语句(if-else)、循环结构(for、while)和跳转语句(break、continue)。能够通过控制结构来控制Shell脚本的执行流程。
  • 函数和模块化:在Shell脚本中,可以定义函数来实现代码的模块化和重用。了解如何定义和调用函数,传递参数和返回值,以解决程序中的复杂问题。
  • 异常处理:Shell脚本中可以通过条件语句来处理异常情况。例如,使用条件判断语句来捕获错误并采取相应的处理措施,以保证脚本的稳定性和可靠性。
  • 数据结构和算法:Shell脚本的数据结构较为简单,主要依赖于数组。在编写Shell脚本时,可以使用数组来存储和操作数据。也可以使用常见的算法来解决问题,如排序、查找等。
  • 调试和测试:Shell脚本的调试和测试可以借助于Shell脚本调试工具和技术。可以使用echo命令输出调试信息,使用set -x命令启用调试模式,以验证脚本的正确性和可靠性。

第十章知识点

sh脚本

  • sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。例如,创建一个文本文件mysh,包含:
#1 /bin/bash
# comment line
echo hello

sh脚本与C程序

  • sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行。如果行是可执行命令且为内置命令,则sh可直接执行。sh脚本不需要main函数,在sh脚本中,第一个可执行语句是程序的入口点。
  • C程序必须先编译链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件。每个C程序必须有一个main()函数。

命令行参数

  • 可使用与运行sh命令完全相同的参数调用sh脚本,如:
    mysh one two three
  • 在sh脚本中,可以通过位置参数$0、$1、$2等访问命令行参数。
  • 在sh中,可用内置变量$#和$*计数并显示命令行参数。
    • $#=命令行参数$1到$n的数量
    • $*=所有命令行参数,包括$0
    • $S=执行sh的进程PID
    • $?=最后一个命令执行的退出状态

sh变量

  • sh有许多内置变量,如PATH、HOME、TERM等。
  • 除了内置变量,用户还可以使用任何符号作为sh变量,不需要声明。所有sh变量值都是字符串。
  • 未赋值的sh变量是NULL字符串
  • sh变量可用以下方法设置或赋值:
    variable=string # NOTE:no white spaces allowed between tokens

sh中的引号

  • sh有许多特殊字符,如$、/、*、>、<等,要想把他们用作普通字符,可使用\或单引号来引用他们。

sh语句

  • sh语句包括所有Unix/Linux命令,以及可能得I/O重定向

sh命令

内置命令

  • .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,则等待所有活动子进程。

Linux命令

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

命令替换

在sh中,$A会被替换成A值。

sh控制语句

  • if-else-fi语句
if [condition]
  then
    statements
  else
    statements
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
  • continue和break语句

I/O重定向

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

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

嵌入文档

可以指示输出命令从stdin获取输入,将其回显到stdout,直到遇到预先安排的关键字。

echo << END
END
cat << DONE
DONE

sh函数

func()
{
  # function code
}

sh中的通配符

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

命令分组

在sh脚本中,可以用{}或()对命令进行分组。

eval语句

sh在执行命令之前,按以下步骤计算该命令行。

  • 参数替换:扫描命令行,将任何$x替换为它的值
  • 命令替换:用替换执行“pwd”。
  • 通配符扩展:当sh执行该行时,它将new*展开为以abc开头的文件名。

调试sh脚本

bash -x mysh

遇到的问题

苏格拉底测试

sh命令




sh控制语句




遇到的问题

对命令分组的认识不够清晰

GPT解答:

标签:语句,脚本,Shell,变量,信息安全,第三周,笔记,命令,sh
From: https://www.cnblogs.com/wenxinhe/p/17726087.html

相关文章

  • 面向对象学习笔记(避雷篇)
    面向对象学习笔记(避雷篇)时间还挺快的,当年的OIer已经上大学啦!在大学的C++学习中,要求我们掌握两种编程技巧,即面向对象和面向过程。因为高中时期不管是CSP还是NOIp的比赛,大家用的基本上都是面向过程的设计思路,因此我开学后就着重开始学习面向对象的方法。这里对面向对象的......
  • 2023秋季阅读笔记计划
    1、目标阅读的书籍名称《代码大全》、《梦断代码》2、目标阅读笔记的发表时间第一篇:2023-09-24第二篇:2023-09-27第三篇:2023-09-30第四篇:2023-10-03第五篇:2023-10-09第六篇:2023-10-15第七篇:2023-10-21第八篇:2023-10-27第九篇:2023-11-03第十篇:2023-11-08......
  • 《梦断代码》阅读笔记01
    1、与其他的书籍很不同的一点是:这本书有第0章而第0章有这么一句话,也是将我这两年来学习技术的心理状态给描绘了个大概:“helloworld”程序一无所用,但足以蛊惑人心,多少软件雄心勃勃,但最终未结善果。不得不承认的一点是,我当初刚开始使用IDEA编程工具学习Java的时候,坚持学习下去......
  • 学习笔记3
    第十章Sh编程10.1sh脚本:1.sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。2.sh脚本与C程序C程序必须先编译链接到一个二进制可执行文件,再通过主sh的子进程运行该二进制可执行文件;sh则可直接执行行命令。sh脚本不需要main函数。10.2sh脚本与C程序两者虽......
  • 2023-2024-1 20211327 信息安全系统设计与实现 学习笔记3(必做)
    学习笔记3程序设计语言必备要素和技能shell脚本实践过程截图程序设计语言必备要素和技能1.语法和语义:了解语言的基本语法规则和语义,包括如何定义变量、数据类型、运算符、控制结构等。这是编写有效代码的基础。2.数据结构和算法:掌握数据结构(如数组、链表、栈、队列)和基......
  • 《信息安全系统设计与实现》第三周学习笔记
    《信息安全系统设计与实现》第三周学习笔记学习程序设计语言的体会必备的要素和技能在Python,c,java语言中我对于c语言的使用最多,所以我主要从c语言的角度说说我对于程序设计语言的必备的要素和技能。在我看来,学习程序设计语言,需要掌握以下必备要素和技能:语法:了解C语言的......
  • 笔记 | 信号和槽机制
    什么是信号和槽?信号和槽是Qt框架中的两个关键元素,用于对象之间的通信。简而言之,信号是对象发出的事件或消息,而槽是用于响应信号的特殊成员函数。通过将信号与槽连接起来,可以在一个对象发出信号时自动调用另一个对象的槽函数。在Qt中,信号和槽是通过宏(Q_OBJECT和SIGNAL、SLOT)进行声明......
  • Qemu源码分析(7)--Apple的学习笔记
    一,前言今天继续分析主要的api,包括了printlog和属性add及set,因为对于不同对象的操作,主要就是靠属性值设置及判断使用。二,源码分析A,关于qemu中自带的-d的log需要传入的参数主要通过-d然后传入的参数如下第2个成员,比如out_asmconstQEMULogItemqemu_log_items[]={{CPU_LOG_TB......
  • 学习笔记3
    第十章:sh编程介绍第十章的主要内容是研究sh编程。对于sh编程的介绍分为以下几个方面:1.sh脚本的编写脚本格式以#!/bin/bash开头(指向解释器)2.sh控制语句2.1脚本格式脚本格式以#!/bin/bash开头(指向解释器)2.2第一个shell脚本,helloworld.sh,输出helloworld!2.3执行方式方......
  • 学习笔记3
    学习笔记3一门程序设计语言具有以下必备的要素和技能:语法:了解语言的基本语法规则,包括变量、数据类型、运算符、控制流程(如条件语句和循环语句)、函数定义等。数据结构:理解常见的数据结构,如数组、链表、栈、队列、树、图等,并能够灵活地应用于实际问题中。算法:掌握常见的算法思......