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

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

时间:2023-09-24 17:23:23浏览次数:41  
标签:语句 文件 commands 信息安全 笔记 学习 命令 sh file

第十章 sh编程

sh脚本

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

sh脚本与C程序

  • sh脚本和C程序有一些相似之处,但他们在根本上是不同的。
    • sh是解释程序,逐行读取sh脚本并直接执行这些行,而C语言必须先编译链接到一个二进制可执行文件。

    • 在sh脚本中,每个变量都是字符串,而C语言的变量都必须有一个类型如char、int、float等

    • sh脚本不需要main函数,而C语言必须有main函数。

命令行参数

可使用与运行sh命令完全相同的参数调用sh脚本,如:mysh one two three
sh中内置变量:

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

sh变量

  • sh有许多内置变量,如PATH、HOME、TERM等。

sh中的引号

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

sh语句

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

sh命令

  • 内置命令
    .file

    break [n]

    cd [dirname]

    continue [n]

    eval [arg...]

    exec [arg...]

    exit [n]

    export [var…]

    trap [arg] [n]

    umask [ddd]

    wait 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-else-fi语句的语法是:

       if [condition]
          then
             statemates
          else
             statements
       fi
      
  • if-elif-else-fi语句

    • 这类似于C语言中的if-else- if-else

       if [condition];then
           commands
         elif [condition2];then
           commands
       else
           commands
       fi
      
  • for语句

    • sh中的for语句作用类似于C语言中的for循环

      for VARIABLE in string1 string2 ... stringn
        do
          commands
        done
      
  • while语句

    • 类似于C语言中的while循环

       while [condition]
         do
           commands
         done
      
  • until-do语句

    • 类似于C语言中的do-until语句

      until [ $ANS = "give up" ]
       do
           echo -n "enter your answer"
           read ANS
       done
      
  • case 语句

    • 类似于C语言中的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函数

  • sh函数的调用方式与sh脚本文件的执行方式完全相同。sh语句func s1 s2 ... sn调用sh函数,以参数(字符串)形式传递s1~sn

sh中的通配符

  • 星号通配符:sh中最有用的通配符是*,可扩展到当前目录中的所有文件

    • file *:列出当前目录中所有文件的信息

    • ls *.c:列出当前目录中所有以.c结尾的文件

  • ?通配符:查询某文件名中的字符

    • file ???:有3个字符的所有文件名

    • ls *.??:一个点号.后有两个字符的所有文件名

  • [ ]通配符:查询文件名中一对[]中的字符

    • file [ab]:包含字符a或b的所有文件名

    • ls [xyz]:列出所有包含x、y或z的文件名

    • ls [a-m]:列出包含a到m范围内字符的所有文件名

命令分组

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

eval语句

eval [arg1 arg2 ... argn]

  • eval是sh的一个内置命令。它由sh自己执行,而不需要复刻新进程。

实践:用sh脚本递归复制文件

过程



文件myrcp.sh代码

苏格拉底挑战

遇到的问题

问题:在实践“用sh脚本递归复制文件”中,执行myrcp.sh文件报错

解决办法:问gpt

看完gpt的回答,我修改了一下代码,最后运行成功

--------------------------------------------------------------------------------------------------------------------------

标签:语句,文件,commands,信息安全,笔记,学习,命令,sh,file
From: https://www.cnblogs.com/wjdnmx/p/17725922.html

相关文章

  • MySQL实战45讲基础篇笔记
    基础架构与查询连接器1、root用户更改普通用户的权限将在下次普通用户重连时生效,即不会影响到当前连接的用户。2、空闲状态的链接经过设置的等待时间后会断开连接,下次使用需要重连。3、长连接和短连接:建立连接的过程比较复杂-->少使用短连接4、长连接使用时间MySQL内存占用......
  • 【监督学习:线性回归和分类】3.分类
    逻辑回归分类问题假设预测的变量y是离散的值,需要使用逻辑回归(LogisticRegression,LR)的算法,实际上它是一种分类算法。二元分类二元分类问题是指y只有两个离散值的情况,例如:垃圾邮件分类:y=1表示是垃圾邮件,y=0表示不是垃圾邮件癌症检测:y=1表示患有癌症,y=0表示没有癌症假说表......
  • 2023 20213423梁锦辉《计算机基础与程序设计》第一周学习总结
    2023-2024-1 20213423  《计算机基础与程序设计》第1周学习总结作业信息:加入云班课,参考学习本周学习资源注册博客园账号,加入2022-2023-1-计算机基础与程序设计参考 基于VirtualBox虚拟机安装Ubuntu图文教程安装Linux系统快速浏览一遍教材计算机科学概论,课本每章......
  • 初章·一个slam小白的学习之路
    个人简介:坐标魔都,攀岩爱好者,大三CS本科生,从小没有竞赛经历,靠高考小宇宙爆发考上了现在的学校(小众院校,不是top但很卷),被一众oi大佬吊打,目前专业排名68%。由于大一和大二GPA太拉报不了三加一,于是决定在学校的实验室多花些时间。大二加入了学校的slam实验室,一脸懵逼地自学了半年的slam......
  • 【Pandas笔记总结】
    【一】Pandos初识Pandas是什么Pandas主要特点Pandas主要优势Pandas内置数据结构Pandas下载与安装【二】PandasSeries入门PandasSeries是什么PandasSeries创建PandasSeries访问PandasSeries常用属性PandasSeries常用方法【三】PandasDataFrame入门P......
  • 20211128李杰《信息安全系统设计与实现》第十章笔记
    一、任务内容自学教材第10章,提交学习笔记(10分) 大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的? ,评分标准如下 1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行......
  • python列表入门学习
    Python是一个非常强大且易于学习的编程语言,而列表(list)是Python中最常用的数据结构之一。无论你是初学者还是经验丰富的开发者,理解和掌握Python列表的使用都是非常重要的。1.什么是列表?列表是一个有序的元素集合,可以容纳多个值,这些值可以是任何数据类型。#定义一个空列表empt......
  • 《信息安全系统与设计》第三周学习笔记
    sh脚本sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句sh脚本的第一行通常以#!组合开始,通常称为shebang实践创建文本文件my.sh编辑运行sh脚本与c程序sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行c程序必须先编译链接到一个二进制可执行文件,......
  • 2023-2024-1 20211211《信息安全系统设计与实现(上)》第10章学习笔记
    内容目录一、程序设计语言与shell脚本(1)一门程序设计语言有哪些必备要素和技能(2)这些要素和技能在shell脚本中如何呈现二、sh脚本三、sh脚本与C程序四、命令行参数五、sh变量六、sh中的引号七、sh命令(1)内置命令(2)linux命令八、sh控制语句(1)if-else-fi(2)if-elif-e......
  • 《信息安全系统设计与实现》第三周学习笔记
    一门程序语言必备的要素和技能语法和语义:了解程序设计语言的语法规则和语义约定,包括变量声明、语句结构、运算符、条件语句、循环结构等。掌握正确的语法和语义可以编写有效且不会造成语法错误的程序。数据类型:了解不同数据类型的概念和用法,例如整数、浮点数、字符串、布尔值等......