首页 > 其他分享 >20211325 2023-2024-1 《信息安全系统设计与实现(上)》第三周学习笔记

20211325 2023-2024-1 《信息安全系统设计与实现(上)》第三周学习笔记

时间:2023-09-23 16:56:14浏览次数:42  
标签:语句 文件 2024 命令 sh 参数 2023 20211325 执行

 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第三周学习笔记

一、任务要求

自学教材第10章,提交学习笔记(10分) 大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的? ,评分标准如下 1. 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容 (4分) “我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题” 核心是要求GPT:“请你以苏格拉底的方式对我进行提问” 然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?” 如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?” GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。 2. 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分) 3. 实践过程截图,代码链接(2分) 4. 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)(1分)

二、课本第十章知识总结

(1)sh脚本

sh脚本是一个包含sh语句的文本文件,命令行解释程序sh要执行该语句。

  • 创建mysh:
  #! /bin/bash
  # comment line
  echo hello

 

使用 chmod -x mysh 使其可执行,然后运行mysh

(2)sh脚本与C程序

  • sh脚本和C程序有一些相似之处,但它们在根本上是不同的。
  • sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行。若是可执行命令且为内置命令则直接执行,否则复刻一个子进程来执行命令,并等待子进程终止再继续,每个变量都是字符串,sh脚本不需要main函数,第一个可执行语句是程序的入口点。C语言必须先编译链接到一个二进制可执行文件,然后通过主sh的子进程运行二进制可执行文件,每个变量必须有一个类型,必须有main()函数。

(3)命令行参数

可使用与运行sh命令完全相同的参数调用sh脚本,如
mysh one two three
可通过位置参数$0、$1、$2等访问命令行参数,前10个命令行参数可以作为$0~$9被访问,10以上参数必须称为${n},或者可以通过稍后显示的shift命令查看他们。

  • 可用内置变量$#和$计数并显示命令行参数
    $# = 命令行参数$1到$n的数量
    $
     = 所以命令行参数,包括$0
    与命令执行相关的
    $S = 执行sh的进程PID
    $? = 最后一个命令执行的退出状态,成功为0

(4)sh变量

  • 内置变量:PATH、HOME、TERM等
  • 还可以以使用任何符号作为sh变量,所有sh变量值都是字符串,未赋值的为NULL
  • 变量赋值
    variable=string

(5)sh中的引号

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

(6)sh语句

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

(7)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,则等待所有活动子进程。
  • read命令:当sh执行read命令时,它会等待来自stdin的输入行。

2.Linux命令

  • echo命令:echo只是将参数字符串作为行回显到stdout,通常将相邻的多个空格压缩为一个空格,除非有冒号
  • expr命令:将两个参数字符串转换为数字,然后对数字执行操作OP,再将得到的数字转换回字符串
    expr string1 op string2
  • 管道命令:在sh中经常使用管道作为过滤器
    ps -ax | grep httpd
    cat file | grep word
  • 其他实用命令:
  • axk:数据处理程序。
  • cmp:比较两个文件。
  • comm:选择两个排序文件共有的行。
  • grep:匹配一系列文件的模式。
  • diff:找出两个文件的差异。
  • join:通过使用相同的键来连接记录以比较两个文件。
  • sed:流或行编辑命令。
  • sort:排序或合并文件。
  • tail:打印某个文件的最后口行。
  • tr:一对一宇符翻译。
  • uniq:从文件中删除连续重复行。

3.命令替换

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

4.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

  

continue和break语句
与C语言一样,continue重启最近循环的下一个迭代,break退出最近循环,工作原理相同

5.I/O重定向

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

6.sh函数

sh函数定义

  func()
  {  
    # function code
  }

  

7.sh通配符

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

8.命令分组

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

9.eval语句

eval是sh的一个内置命令,将输入参数字符串连接到一个字符串中,然后给出结果字符串

10.调试sh脚本

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

(8)问题

sh中所有的值作为字符串,要是想比较整数数值大小改怎么写?

  • if [s1 = s2]
    在上述语句中,左括号符号[实际上是一个测试程序,作为以下内容执行: test string1 comp string2 or [ string1 comp string2 ]
    它比较两个参数字符串,以确定条件是否为真。需要注意的是,在sh中,0为TRUE.而非0为 FALSE,这与在C程序中完全相反。这是因为当sh执行命令时,它会获得命令执行的退出状态,如果执行成功,则为0,否则为非0。由于[是一个程序,所以如果执行成功,则退出状态为0,即测试条件为真,如果测试条件为假,则退出状态为非0。或者,用户也可以使用sh内置变量$?来测试最后一次命令执行的退出状态。
  • 相反地,运算符-eq、-ne、-lt、-gt 等将参数作为整数进行比较
    if["123”="0123"] is false since they differ as strings
    if["123"-eg"0123"] is true since they have the same numerical value
  • 除了比较字符串或数值之外,测试程序还可以测试文件操作中经常需要的文件类型和文件属性。
if [ -e name ]	# test whether file name exists	
if [ -f name ]	# test whether name is a (REG) file	
if [ -d name ]	# test whether name is a dir	
if [ -r name ]	# test whether name is readable similarly for -w, -x, ete.	
if [ f1 -ef f2 ]# test whether f1, f2 are the same file

  

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

程序设计语言有3个方面的因素,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,亦即表示按照各种方法所表示的各个记号的特定含义,但不涉及使用者。程序=数据结构+算法
Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令,并把它送入内核去执行。内核是Linux系统的心脏,从开机自检就驻留在计算机的内存中,直到计算机关闭为止,而用户的应用程序存储在计算机的硬盘上,仅当需要时才被调入内存。Shell是一种应用程序,当用户登录Linux系统时,Shell就会被调入内存去执行。Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。

三、课堂代码实现(makefile)

截图如下:

 

 

 四、苏格拉底挑战

(1)知识点:sh函数

 

 

 

 

 

 (2)知识点:eval语句

 

 

 

 

 

 

 

 

 

 

标签:语句,文件,2024,命令,sh,参数,2023,20211325,执行
From: https://www.cnblogs.com/Garden-of-Avalon/p/17724669.html

相关文章

  • 2023.9.23
    BP8906[USACO22DEC]BreakdownP一个有向完全图(包括自环),进行\(n^2\)次删边,问每次删边后从\(1\)到\(n\)的长为\(k\)的最短路长度,或指出不存在长为\(k\)的\(1\)到\(n\)的路径。\(n\le300\),\(2\lek\le8\),\(1\lew_{i,j}\le10^8\).容易想到分层图,直接跑是\(O(......
  • 2023-09-23:用go语言,假设每一次获得随机数的时候,这个数字大于100的概率是P。 尝试N次,其
    2023-09-23:用go语言,假设每一次获得随机数的时候,这个数字大于100的概率是P。尝试N次,其中大于100的次数在A次~B次之间的概率是多少?0<P<1,P是double类型,1<=A<=B<=N<=100。来自左程云。答案2023-09-23:首先,我们可以使用动态规划来解决这个问题。我们可以定义一个二......
  • 2023-09-23:用go语言,假设每一次获得随机数的时候,这个数字大于100的概率是P。 尝试N次,其
    2023-09-23:用go语言,假设每一次获得随机数的时候,这个数字大于100的概率是P。尝试N次,其中大于100的次数在A次~B次之间的概率是多少?0<P<1,P是double类型,1<=A<=B<=N<=100。来自左程云。答案2023-09-23:首先,我们可以使用动态规划来解决这个问题。我们可以定义一个二维数组d......
  • 2023-09-23 思源笔记使用分享
    2023-09-23思源笔记使用分享尝试使用obsidian等类似的软件,还是存在文档同步的问题,使用思源笔记和阿里云提供的对象存储服务,可以实现低成本的多端笔记同步。思源作为一款开源软件,可以自行实现多端部署,对于程序员群体是一个很不错的选择。我之前一直使用wolai这款笔记软件,之......
  • 2023年南京大学“飞迪计划”二次选拔考试题(数学)
    2023年南京大学“飞迪计划”二次选拔考试题(数学)Fiddie​【创作声明】本卷是观众投稿的回忆版,由Fiddie整理,转载请【您的文章推送开头的显眼地方用大字】注明来源:知乎Fiddie.请勿在您转载的文章背后插入过多的自己的广告!谢谢配合.如果同学们有类似的考试,欢迎回......
  • 20230922
    20230922NOIP#13(33daiOJ)总结时间安排7:40~8:00看\(A,B,C,D\),\(A\)和\(C\)一点不会。8:00~8:10写\(D\)的\(10\)分。8:10~9:00\(B\)一边写一边想,写了50。9:00~10:10别的想不到了,但是秉持不能不写的原则乱搞各个题。10:10~11:30\(B\)对路径的处理有了新的想法......
  • For The Music为音乐而生!——音频世家索尼举办2023分享交流会
    9月22日,“2023索尼音频分享交流会”在上海BEACHNO.11音乐艺术空间完美落幕。这是一场融合索尼工匠精神、业内领先的索尼黑科技及解密产品研发背后故事的交流盛宴,同时展示了索尼在音乐生态领域的综合实力——从创作、录制制作、到版权发行、播放聆听——浸润音乐领域已经有70余年历......
  • 【2023潇湘夜雨】WIN11_Pro_22H2.23545.1000软件选装纯净版9.23
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_23H2.23545.1000。2.增加部分优化方案,手工精简部分较多。3.OS版本号为23545.1000。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.13.0.8》网卡版、......
  • 【2023潇湘夜雨】WIN11_Pro_22H2.22621.2359软件选装纯净版9.22
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_23H2.22621.2359。2.增加部分优化方案,手工精简部分较多。3.OS版本号为22621.2359。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.13.0.8》网卡版、......
  • 20230923
    //assure,beneficial,correspond,courtesy,desirous,deteriorate,discussion,interim,keen,maintain,requirement,valid,regularcustomer,substantialbusinessassure-保证Toassuremeanstogivesomeoneconfidenceorcertaintyaboutsomething.Itinv......