hnu云计算个人实验报告——实验四

实验题目

Shell基础与脚本编程

实验目的

实验4.1和实验4.2和实验4.3

实验环境

1. AlmaLinux release 9.0 (Red Hat分支)

2. VMware Workstation Pro 16

3. MobaXterm v20.0

实验内容及操作步骤:

实验4.1 Shell基础

3.1通配符

1. 打开终端软件ssh会话,连接云服务器ECS,使用你自己的账号和密码登录。

2. 转到/etc目录,并在此处列出所有文件。

3. 使用带通配符的ls列出文件名:

a. 以conf结尾

b. 以d或D开头

c. 在第五个位置包含一个o

d. 包含单词制表符(大写和小写字符的任意组合)

e. 以数字结尾

f. 不以数字结尾

4. . 如果执行命令ls -d?[!y] * [e-g],会发生什么?可以匹配的最短文件名是什么?执行此命令以验证 您的答案。

5. 返回您的主目录。

3.2 重定向

1. 使用cat命令和重定向符来创建一个名为junk的文件,其中包含几行文本。输入几行后,结束对cat 命令的输入并返回到shell提示符。然后查看您刚刚创建的文件的内容。

2. 使用重定向符将更多行添加到junk文件。然后查看junk文件的内容,并检查您保存在此文件中的所有行是否都存在。

所有行都存在。

3.3管道,tee和过滤器

1. 计算当前目录中的文件数。使用wc命令,不要手动计算文件数。  

2. 执行如下命令计算文件数并保存结果, 查看temfile文件内容,与上一条命令有何差异?

计算结果大1

3. 在对文件进行计数之前,请使用ls命令并将输出保存到名为tempfile2的文件中。

4. 使用sed命令更改ls -l /etc/命令的输出,以便看起来您拥有/etc中的所有文件。使用和不使用全局选项都可以执行此操作。有什么区别?

g全局替换root为tux1

5. 使用awk命令显示/etc目录中所有文件的权限和名称。

在RHEL系统上

在SUSE系统上

6. 使用tac命令以相反的顺序显示ls命令的输出。

7. 使用nl命令对tempfile2的行进行编号。

8. 使用pr命令为打印机格式化tempfile2。

9. 将“文件和目录权限”练习中的所有usersfile文件合并为一个大文件,名为usersfile5。检查此文件是 否与原始的users文件相同。

3.4命令分组

1. 作为一项命令,显示当前系统日期和所有登录的用户,并在对行进行编号后将所有这些保存到一个 文件中。检查您的输出。

3.5进程环境

1. 显示当前流程环境中定义的所有变量,同时显示当前导出的所有变量。

set | less

空格翻页

输入q

env | less

输入q

2. 创建变量x并将其值设置为10。检查变量的值。同样,显示所有当前变量和导出的变量。

向下滑动x=10

3. 启动一个子shell 。检查以查看变量x在子shell 中包含什么值。x的值是多少?列出子shell 程序的 当前变量。

4. 将x的值设置为500,然后返回到父Shell。 x的当前值是多少?

5. 确保子Shell继承变量x。 通过创建一个子shell并检查变量x的值来验证这一点。 之后,退出您的子 shell。

实验4.2 Shell脚本编程

3.1使用位置参数

1. 打开终端软件ssh会话,连接云服务器ECS,使用你自己的账号和密码登录。

2. 在您的bin目录中,创建一个名为parameters的shell脚本,该脚本将回显以下内容:

 • Shell脚本的名称

 • 前三个位置参数

 • 位置参数总数

使用位置参数10 100 1000执行脚本。

3. 现在,使用位置参数“10 100 1000”执行脚本,有什么区别?

3.2条件执行

1. 使用条件执行,创建一个名为checkfile的shell脚本,该脚本检查目录中是否存在名为parameters 的文件。如果存在,请使用命令显示文件内容。执行脚本。

2. 修改checkfile脚本,并将所查找文件名从parameters更改为noname(检查以确保当前目录中没 有该名称的文件)。另外,使用条件执行时,如果cat命令未成功,则显示错误消息“找不到文件”。 执行脚本。  

3. 修改checkfile脚本,以接受来自命令行的单个参数作为ls和cat命令的输入。执行脚本两次,一次使 用名为parameters的文件,再一次使用noname的文件。

4. 再次执行checkfile脚本,但是这次不使用任何参数。会发生什么?修改脚本,这样就不会再次发生。

3.3循环

1. 使用for循环,修改checkfile脚本以接受多个文件作为命令行输入,而不仅仅是一个。如果找到文 件,则显示文件内容。如果找不到文件,则显示一条错误消息,显示未找到的所有文件名。在目录 中查找并记下一些可用作输入的有效文件名。使用有效和无效的文件名执行脚本。

2. 现在做同样的事情,但是结合使用while循环和shift命令。

3.4算术

1. 从命令行显示乘以5乘以6的结果。

2. 现在,创建一个名为math的shell脚本,当从命令行作为输入输入时,将任意两个数字相乘。执行 脚本5乘以6。尝试其他任意两个数字。

3.5整合练习

1. 使用您在本课程中获得的知识编写一个脚本,该脚本接受目录名称作为参数,并计算该目录中文件的总大小。

实验4.3 搭建Shell脚本开发环境(VS code)

3.1 VS Code配置Remote-SSH远程开发

1. 下载并安装VS Code

2. 安装远程开发扩展

3. 安装SSH工具

4. 配置Remote-SSH 打开VS Code,点击右侧远程资源管理器,选择SSH Targets。点击add New,输入ssh 用户名@IP (例:ssh tux1@106.14.150.128)。选择配置文件,默认选择第一个。点击新添加的远程服务 器,在当前窗口打开,输入密码。左下角出现如下提示表示连接成功。

密匙

连接ssh s202026010401@106.14.118.167

成功

3.2 VS Code Bash debug

1. 安装Bash Debug 点击扩展栏,然后搜索“Bash Debug”,点击安装。

2. 添加调试配置文件(可以在本地或云服务上实现)。 确保SSH连接成功,若在本地进行可按照之前的方式连接至虚拟机。点击"文件->打开文件夹",选 择对应的用户文件夹。点击"运行->添加配置",系统会自动生成.vscode文件夹和launch.json文 件,在launch.json中添加以下三个部分,并保存。

3. 创建测试文件

创建test1.sh、test2.sh、test3.sh并在文件中输入以下内容:

   

4. 利用调试工具栏,对脚本进行简单调试

a. 打开test1.sh,点击左边栏“运行和调试”或者按热键,启动调试,选择Bash[1]Debug(simplest configuration) 点击开始调试。

b. 点击查看,点击打开调试控制台,在调试工具栏中进行单步调试,观察调试控制台的输出。

c. 调试控制台输出结果如下:

5. 利用调试工具栏,对脚本进行复杂调试

a. 在test3.sh第9行设置断点

b. 添加监视变量值

c. 调试脚本,(F11)单步调试test3.sh,观察变量、监视和调用堆栈的变化

 

收获与体会:

  1. 这次实验的shell编程部分很有意思,发现编程语言的逻辑是相似的,表达方式不同。
  2. 在4.3实现远程搭建和调试shell脚本时,遇到了困难,但最终解决了,vscode的远程还是挺方便的。

实验成绩

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随行佯醉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值