实验题目 | 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,观察变量、监视和调用堆栈的变化
收获与体会:
| |
实验成绩 |
hnu云计算个人实验报告——实验四
最新推荐文章于 2024-04-14 22:35:41 发布