Sy6 编辑器vi的应用(+shell脚本3例子)
| 实验环境: 宿主机为win11,网络:10.255.50.5 6389 WSL2 ubuntu 目标机的OS:Ubuntu 内核、版本如下: linux@peggy0223:/$ uname -r 5.15.146.1-microsoft-standard-WSL2 linux@peggy0223:/$ cat /proc/version Linux version 5.15.146.1-microsoft-standard-WSL2 (root@65c757a075e2) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37) #1 SMP Thu Jan 11 04:09:03 UTC 2024 |
| 实验6 编辑器 vi的应用 1.实验目的
2.vi的常用命令 操作命令简介: Ctrl+D:窗口向下移动半屏。 Ctrl+U:窗口向上移动半屏。 Ctrl+F:翻至前一屏。 Ctrl+B:翻至后一屏。 k(或个):光标上移一行。 j(或!):光标下移一行。 1(或→):光标右移一行。 h(或一):光标左移一行。 Enter:光标移到下一行的开始。 -(减号):光标移到前一行的开始。 W:光标移到下一词的前端。 B:光标移到前一词的前端。 ~或0(零):光标移到当前行的前端。 $:光标移到当前行的后端。 A:在光标后立即插入文本。 0:当前行后紧接着开辟一新行。 0(大写字母O):当前行前紧接着开辟一新行。 X:删除光标下的字符。 ndw:删除光标所在词及其后面的n-1个词(包括词后的空格)。D:从光标处删除到行未。 d:从光标处删除到行开始。 ndd:删除光标所在行及其后的n-1行。 U:取消前一次变更。 /字符串:查找字符串。 :w;存盘。 :q:不存盘退出。 :q!:强行退出。 :wq:存盘退出。 :help:显示帮助信息。 :set number:显示行号。 3.实验内容
①大九九乘法表; ②小九九乘法表; ③交互式成批添加用户。 4.实验报告 以书面形式记录下每一个实验内容、编写的源程序,说明程序调试中遇到的问题和解决方法。 5. 思考题
|
| 实验记录: ps注意,脚本文件建议以sh后缀名结尾,这样vi等编辑器会自动识别一些命令和字符,若是使用txt或者无后缀名则不会有提示(vi下是不同颜色提示和成对的符号匹配)。 S1、
在Linux环境下,我们可以使用vi/vim编辑器来创建并编写一个简单的shell脚本,该脚本可以输出大九九乘法表。以下是具体步骤: 当然,这里是一个使用Bash shell脚本实现九九乘法表的简单例子,采用嵌套循环: ```bash #!/bin/bash # 使用嵌套for循环 for ((i=1; i<=19; i++)) do for ((j=1; j<=i; j++)) do # 计算乘积并格式化输出 result=$((i*j)) printf "%2d * %2d = %2d\t" $j $i $result done # 结束一行后换行 echo done ``` 当你运行这个脚本时,它会按照九九乘法表的形式逐行打印出1到9的乘法运算结果。`printf`命令在这里用于格式化输出,`%2d` 表示至少占两位宽度的整数,`%2d * %2d = %2d\t` 是指每部分都至少占用两位,且末尾跟随一个制表符用于列对齐。每完成一行内部循环后,外部循环的`echo`命令将打印一个新行,从而实现乘法表的结构布局。 这样你就成功使用vi编辑器创建并运行了一个能输出大九九乘法表的shell脚本了。 S2、
基于上述信息,我们可以给出一个简单的Bash shell脚本来实现九九乘法表。以下是脚本的一个示例: ```bash #!/bin/bash # 方法一:使用两个嵌套的for循环 for ((i=1; i<=9; i++)) do for ((j=1; j<=i; j++)) do # 使用let命令进行乘法计算,并用echo -n输出不换行的结果 let result=i*j echo -n "$i*$j=$result\t" done # 在每行结束后输出一个换行符 echo done ```
当你保存这个脚本到一个名为`multiplication_table.sh`的文件中,并赋予它执行权限后(例如:`chmod +x multiplication_table.sh`),可以通过运行`./multiplication_table.sh`来执行它,将会得到以下输出: ``` 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 ... 9*8=72 9*9=81 ```
这个脚本利用了两层for循环,外层循环变量`i`从1遍历到9,内层循环变量`j`也从1开始但不超过`i`,这样可以确保每一行只打印出从1到当前行数的乘积。每次计算结果后,用`echo -n`命令不换行地输出结果,并在每个结果后面加上制表符`\t`用于对齐。当内层循环结束时,外层循环的`echo`命令会输出一个换行符,从而形成新的一行。 S3、 以下是一个简单的Shell脚本示例,用于交互式地批量添加用户。在这个脚本中,它会循环询问用户输入用户名和密码,直到用户不再想添加更多用户为止。 ```bash #!/bin/bash while true do echo "请输入要创建的用户名(或按q退出):" read username # 如果输入q,则退出循环 if [ "$username" = "q" ]; then break fi # 提示输入用户密码 echo "请输入用户的密码:" read -s password echo "" # 创建新用户并设置密码 useradd $username echo "$password" | passwd --stdin $username #ubuntu2204中passwd不支持--stdin选项 echo "$password" | sudo chpasswd username #替代选项命令!已经验证ok! # 检查添加用户是否成功 if [ $? -eq 0 ]; then echo "用户 '$username' 已成功创建。" else echo "创建用户 '$username' 失败,请检查输入或系统权限。" fi echo "" done echo "已结束添加用户。" ``` **注意**: - 此脚本需要在具有相应权限的环境中运行,因为`useradd`和`passwd`命令通常需要root权限。 - 密码输入时,使用了`-s`选项使passwd命令在读取密码时不显示输入内容。 - `echo "$password" | passwd --stdin $username`这条命令将密码通过管道传递给passwd命令,以非交互方式设置密码。 - 使用`$?`来获取上一条命令(在这里是`useradd`或`passwd`)的退出状态,如果为0则表示命令执行成功。
|
| Ps,清空文本文件或者脚本文件方法: 第一种使用 > filename ; 第二种使用 cat /dev/null > filename ; 第三种使用 echo “” > filename ;这种是出现一个空格行效果。 分别如下:
第四种使用 truncate -s 0 filename.txt ; truncate是一个专门用来截断文件的命令,它可以将文件截断到指定长度,如果指定长度为0,则可以清空文件内容。 第五种使用 dd if=/dev/null of=filename.txt dd命令是一个非常强大的命令,它可以用来复制文件、转换文件格式等操作,但是它也可以用来清空一个文件。 如下操作:
|
相关文章:
Sy6 编辑器vi的应用(+shell脚本3例子)
实验环境: 宿主机为win11,网络:10.255.50.5 6389 WSL2 ubuntu 目标机的OS:Ubuntu 内核、版本如下: linuxpeggy0223:/$ uname -r 5.15.146.1-microsoft-standard-WSL2 linuxpeggy0223:/$ cat /proc/version Linux vers…...
把标注数据导入到知识图谱
文章目录 简介数据导入Doccano标注数据,导入到Neo4j寻求帮助 简介 团队成员使用 Doccano 标注了一些数据,包括 命名实体识别、关系和文本分类 的标注的数据; 工作步骤如下: 首先将标注数据导入到Doccano,查看一下标注…...
【前端基础】什么是类数组对象,类数组对象转换成数组的方法
类数组对象(array-like object)是指在 JavaScript 中具有类似数组的特征但不是真正的数组的对象。这些对象具有类似数组的特性,例如有一个 length 属性和通过索引访问元素的能力,但它们不具备数组对象的所有方法和特性。 什么是类…...
Python快速入门系列-8(Python数据分析与可视化)
第八章:Python数据分析与可视化 8.1 数据处理与清洗8.1.1 数据加载与查看8.1.2 数据清洗与处理8.1.3 数据转换与整理8.2 数据可视化工具介绍8.2.1 Matplotlib8.2.2 Seaborn8.2.3 Plotly8.3 数据挖掘与机器学习简介8.3.1 Scikit-learn8.3.2 TensorFlow总结在本章中,我们将探讨…...
双非硕转测试之Java学习笔记(一):集合
Java学习-----集合 简单概括单列集合--collectionlist接口:vector类:LinkedList类:set接口:HasSet类:LinkedHashSet类: 双列集合--MapMap接口:HashMap类:HashTable类:Pro…...
zabbix源码安装
目录 一.安装php和nginx客户端环境 二.修改php配置 三.修改nginx配置文件 四.下载并编译zabbix 五.创建zabbix需要的用户及组 六.安装编译需要的依赖 七.配置zabbix文件 八.数据库配置 九.配置zabbix 十.web界面部署 十一.遇到无法创建配置文件 十二.登录zabbix 前…...
计算机视觉之三维重建(5)---双目立体视觉
文章目录 一、平行视图1.1 示意图1.2 平行视图的基础矩阵1.3 平行视图的极几何1.4 平行视图的三角测量 二、图像校正三、对应点问题3.1 相关匹配法3.2 归一化相关匹配法3.3 窗口问题3.4 相关法存在的问题3.5 约束问题 一、平行视图 1.1 示意图 如下图即是一个平行视图。特点&a…...
计算机网络-TCP/IP 网络模型
TCP/IP网络模型各层的详细描述: 应用层:应用层为应用程序提供数据传输的服务,负责各种不同应用之间的协议。主要协议包括: HTTP:超文本传输协议,用于从web服务器传输超文本到本地浏览器的传送协议。FTP&…...
算法训练营第29天|LeetCode 491.递增子序列 46.全排列 47.全排列Ⅱ
LeetCode 491.递增子序列 题目链接: LeetCode 491.递增子序列 解题思路: 用哈希集合进行去重,同一树层不能取重复元素。 代码: class Solution { public:vector<vector<int>>result;vector<int>path;void…...
Ubuntu服务器搭建 - 环境篇
Ubuntu服务器搭建 - 环境篇 基于腾讯云服务器 - Ubuntu 20.04 LTS 一、安装 - MySQL 1.1 概述 MySQL安装方式有三种: 1. 使用Ubuntu 包管理工具 apt安装 2. 使用MySQL官方APT存储库安装 3. 使用MySQL官方二进制发行版安装 1.2 安装 MySQL 使用MySQL官方APT存储库安装 $ wget…...
深度学习基础模型之Mamba
Mamba模型简介 问题:许多亚二次时间架构(运行时间复杂度低于O(n^2),但高于O(n)的情况)(例如线性注意力、门控卷积和循环模型以及结构化状态空间模型(SSM))已被开发出来,以解决 Transformer 在长…...
Topaz Video AI for Mac v5.0.0激活版 视频画质增强软件
Topaz Video AI for Mac是一款功能强大的视频处理软件,专为Mac用户设计,旨在通过人工智能技术为视频编辑和增强提供卓越的功能。这款软件利用先进的算法和深度学习技术,能够自动识别和分析视频中的各个元素,并进行智能修复和增强&…...
解决WordPress文章的段落首行自动空两格的问题
写文章时,段落首行都会空两格,可是WordPress自带的编辑器却没有考虑到这一点,导致发布的文章首行都是顶格的,看起来很不习惯。 我们通常的解决方法都是在发布文章时把编辑器切换到“文本”模式,然后再在首行手动键入两…...
RISC-V单板计算机模拟和FPGA板多核IP实现
🎯要点 🎯使用单板计算机 Visionfive 2 或模拟器测试RISC-V汇编🎯RISC-V汇编加载和算术。🎯使用GNU MAKE汇编RISC-V指令,ESP32使用CMake编译执行指令。🎯RISC-V汇编功能和使用释义:控制指令&am…...
Mojo编程语言案例及介绍
Mojo是一种新兴的编程语言,它结合了现代编程范式与简洁易读的语法,为开发者提供了一个强大且高效的开发工具。以下将详细介绍Mojo编程语言的特性,并通过一个实际案例来展示Mojo的应用。 一、Mojo编程语言介绍 Mojo编程语言的设计理念是“简单…...
【Python面试题收录】Python中有哪些方法交换两个变量的值?至少给出三种方法。
一、使用临时变量 # 定义原始变量 a 10 b 20# 直接交换,Python会一次性执行两个赋值操作 a, b b, a# 无需额外变量,a 和 b 的值已经交换 print(a) # 输出: 20 print(b) # 输出: 10 二、利用元组解包特性(不使用临时变量,推荐…...
MySQL核心命令详解与实战,一文掌握MySQL使用
文章目录 文章简介演示库表创建数据库表选择数据库删除数据库创建表删除表向表中插入数据更新数据删除数据查询数据WHERE 操作符聚合函数LIKE 子句分组 GROUP BY HAVINGORDER BY(排序) 语句LIMIT 操作符 分页查询多表查询-联合查询 UNION 操作符多表查询-连接的使用-JOIN语句编…...
基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)
目录 📚 前言 📑摘要 📑操作流程 📚 系统架构设计 📚 数据库设计 💬 管理员信息属性 💬 学生信息实体属性 💬 宿舍安排信息实体属性 💬 卫生检查信息实体属性 &…...
vulnhub pWnOS v2.0通关
知识点总结: 1.通过模块来寻找漏洞 2.msf查找漏洞 3.通过网站源代码,查看模块信息 环境准备 攻击机:kali2023 靶机:pWnOS v2.0 安装地址:pWnOS: 2.0 (Pre-Release) ~ VulnHub 在安装网址中看到,该靶…...
leetcode热题100.数据流的中位数
作者:晓宜 🌈🌈🌈 个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者 ❤️❤️❤️ 你的关注是我前进的动力😊 Problem: 295. 数据流的中位数…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...






