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

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

时间:2023-09-24 13:55:06浏览次数:34  
标签:语句 文件 commands 变量 信息安全 第三周 笔记 命令 sh

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

第十章 sh编程

sh脚本

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

sh脚本与C程序

  • sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行,相反,C程序必须先编译链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件;
  • 其次,在C程序中,每个变量必须有个类型,相反,在sh脚本中,每个变量都是字符串;最后,每个C程序必须有一个main()函数,每个函数必须定义一个返回值类型和参数,相反,sh脚本不需要main函数。

命令行参数

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

sh变量

  • 内置变量有PATH、HOME、TERM等,除此之外,用户还可使用任何符号作为sh变量,未赋值的sh变量是NULL字符串。

sh中的引号

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

sh语句

  • sh语句包括所有Unix/Linux命令,以及可能的I/O重定向,此外,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…]:将变量导出到随后执行的命令
    • read[var...]:从stdin中读取一行并为变量赋值
    • set[arg...]:在执行环境中设置变量
    • shift:将位置参数$2$3...重命名为$1$2
    • trap [arg][n]:接收到信号n后执行参数
    • umask [ddd]:将掩码设置为八进制数 ddd 的
    • wait [pid]: 等待进程 pid,如果没有给出pid,则等待所有活动子进程
    • read命令:当sh执行read命令时,它会等待来自stdin的输入行
  • Linux命令
    • echo命令:echo只是将参数字符串作为行回显到stdout,它通常将相邻的多个空格压缩为一个空格,除非有引号
    • expr命令:因为所有的sh变量都是字符串,所以我们不能直接把它们改为数值,可通过expr命令间接更改sh变量的值,运行方式如下:
      • expr string1 OP string2
    • 管道命令:在sh脚本中经常使用管道作为过滤器
      •  ps -ax | grep httpd
         cat file | grep word
        
    • 实用命令
      • axk:数据处理程序
      • cmp:比较两个文件
      • comm:选择两个排序文件共有的行
      • grep:匹配一系列文件的模式
      • diff:找出两个文件的差异
      • join:通过使用相同的键来连接记录以比较两个文件
      • sed:流或行编辑命令
      • sort:排序或合并文件
      • tail:打印某个文件的最后口行
      • tr:一对一宇符翻译
      • uniq:从文件中删除连续重复行

命令替换

  • 在sh中,$A会被替换成A值/同样,当sh遇到'cmd'或$(cmd)时,它会先执行cmd,然后用执行的结果字符替换$(cmd)

sh控制语句

  • if-else-fi语句
    • 语法为
        if [condition]
           then
              statemates
           else
              statements
        fi
      
  • 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权限
  • << word:从“here”文件中获取输入,直到只包含“word”的行

嵌入文档

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

sh函数

  • 定义为:
       func()
    {
        # function code
    }
    

sh中的通配符

  • sh中的通配符
  • ls *.c:列出当前目录中所有以.c结尾的文件
  • ?通配符:查询某文件名中的字符
  • [ ]通配符:查询文件名中一对[]中的字符
  • file [ab]:包含字符a或b的所有文件名
  • ls [xyz]:列出所有包含x、y或z的文件名
  • ls [a-m]:列出包含a到m范围内字符的所有文件名

命令分组:

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

eval语句

  • 参数替换:扫描命令行,将任何$x替换为它的值,但只执行一次,即不能再次替换任何产生的$符号。
  • 命令替换:用替换行’pwd’。
  • 通配符扩展:当sh执行该文件时,它将new*展开为以abc开头的文件名,这些会把所有以abc开头的文件名复制到目标目录中。

调试sh脚本

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

sh脚本的应用

苏格拉底挑战:














遇到的问题:

  • 在对sh一些命令的理解上还有些问题,比如移动文件的用法,查看文件的命令、复制文件的命令等
  • 解决方法:通过询问GPT给我答案,并要求它给出一些实例,再到虚拟机上实践。

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

  • 语法:了解语言的基本语法规则,包括标识符的命名规范、数据类型的定义和使用、表达式和语句的编写等。

  • 控制流:掌握条件语句(如if-else、switch)、循环语句(如for、while)、跳转语句(如break、continue)、异常处理等控制流结构。

  • 数据结构和算法:了解常见的数据结构(如数组、链表、栈、队列、树等)和算法(如排序、查找、递归等),能够灵活运用它们解决实际问题。

  • 函数和模块化:掌握函数的定义和调用,了解如何将代码模块化,使程序更加可读、可维护。

  • 输入和输出:能够读取用户输入、处理数据并输出结果,对于文件的读写也要有一定的了解。

  • 异常处理:能够处理程序运行中可能发生的异常情况,防止程序崩溃或产生错误结果。

在shell脚本中,这些要素和技能可以通过以下方式呈现出来:

  • 语法:遵循shell脚本的语法规则,使用正确的标识符命名变量、函数、文件等。

  • 控制流:使用if-else、for、while等语句控制程序的执行流程,根据条件进行分支选择或循环操作。

  • 数据结构和算法:使用数组、字符串、变量等数据结构存储和操作数据,使用适当的算法解决问题。

  • 函数和模块化:定义函数并进行调用,将程序分解为多个函数模块,提高代码的可复用性和可维护性。

  • 输入和输出:使用read语句读取用户输入,使用echo或printf语句输出结果,使用重定向进行文件的读写操作。

  • 异常处理:使用条件判断和错误码来处理可能出现的异常情况,使用try-catch结构捕获和处理异常。

标签:语句,文件,commands,变量,信息安全,第三周,笔记,命令,sh
From: https://www.cnblogs.com/gfynb/p/17725905.html

相关文章

  • 学习笔记1
    知识点ubuntulinux的使用unix/linux常用命令ls:lsdirname:列出CWD或目录的内容cddirname:更改目录pwd:打印CWD的绝对路径名touchfilename:更改文件名时间戳(如果文件不存在,则创建文件)catfilename:显示文件内容cpsrcdest:复制文件mvsrcdest:移动或重命名......
  • 学习笔记2
    第九章I/O库函数一.知识点归纳(一)I/O库函数与系统调用系统调用函数:open()、read()、write()、lseek()、close()I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose()二者区别:在系统调用程序中,文件描述符fd是一个整数。在库I/O程序中,fp是一个文件流指针。系统调用ope......
  • PPT| 企业信息安全架构全貌 P17
        本人在四大咨询机构从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货.   【智能制造数字化咨询】该PPT共86页,由于篇幅有限,以下为部分资料,如需完整原版 方案,点击关注下方。  ......
  • vue笔记
    一、vue项目vscode自动import,VUE组件和ts模块1、在vscode插件市场安装vetur插件2、修改tsconfig.json文件将moduleResolution改为node3、重启vscode,后面再下代码就可以自动import了。二、vue项目中使用elementplus参考elementplus官网:https://element-plus.org/zh-CN/guide/desig......
  • 第三周学习笔记
    sh编程1.sh脚本Shell脚本是一种用于在Unix、Linux和其他类Unix系统上编写和执行命令序列的脚本语言。它使用Shell解释器(如sh、bash、csh等)来解释和执行脚本。Shell脚本可以包含一系列命令、控制结构、变量和函数,用于完成特定的任务或自动化一系列操作。通过编写Shell脚本,你可以......
  • 学习笔记3
    第十章教材知识点Shell脚本:Shell脚本是一系列Shell命令的集合,以文本文件的形式保存,并通过Shell解释器执行。Shell脚本的文件扩展名通常为.sh。Shell脚本的第一行指定解释器,例如#!/bin/sh表示使用sh解释器。命令行参数:在Shell脚本中,可以通过特殊变量$0、$1、$2等来获......
  • 《Unix/Linux系统编程》教材第10章学习笔记
    大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?必备要素和技能:数据类型和变量:用于存储和处理数据的基本单元。控制结构:用于控制程序流程的结构,如条件语句、循环语句等。函数和模块:用于封装代码块......
  • [笔记]$Python$输出笔记
    [笔记]\(Python\)输出笔记补位输出\(TypeI:\%\)格式化形式:\('format'\\\%\\'value'\)\(value\)可以是数字、字符串、变量等#数字型num=3s='%05d'%num#0代表用于分隔的数字,5代表输出总共占用5位print(s)#输出结果为00003,共占用5位注意:用\(0\)补位不会出现......
  • 学习笔记3
    关于知识点知识点归纳第十章10.1sh脚本sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。10.2sh脚本与C程序Shell脚本(sh脚本)和C程序是两种不同的编程语言和编程环境,它们有各自的特点和应用场景。Shell脚本(sh脚本):脚本语言:Shell脚本是一种脚本语言,通常......
  • 学习笔记3
    第10章sh编程0.结构与理解sh代码在包含sh语句的文本文件中,通常以#!开头,文件为.sh创建并编写.sh文件后发现不是可执行程序,询问gpt如何执行:学习得知,第一种添加权限的方法,chmod是一个用于修改文件权限的命令,而+x是chmod命令的一个选项,表示为文件添加可执行权限。第二种是......