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. 数据流的中位数…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...






