Linux操作系统实验报告单(3)文本编辑器vi/vim
一、实验目的
- 掌握vi/vim编辑器的进入和退出方式
- 了解vi/vim的三种模式
- 熟练vi/vim的操作命令
二、实验内容
1.在家目录下新建一个名为“vitest_name”(“name”为学生姓名拼音)的目录。
●创建用户目录命令:sudo mkdir /home/vitest_lw3613
●原理:mkdir命令用于创建目录,\~表示当前用户的家目录路径。若需递归创建多级目录,需添加-p参数。
●验证:通过ls \~确认目录存在。
2.执行复制命令,将文件/etc/rsyslog.conf复制到vitest_name目录下。
●复制系统配置文件命令:sudo cp /etc/rsyslog.conf /home/vitest_lw3613/
●原理:cp命令实现文件复制,需指定源文件路径和目标目录。
●权限说明:普通用户需对/etc/rsyslog.conf有读取权限,否则需使用sudo提权。
3.使用vi/vim打开vitest_lw3613 目录下的rsyslog.conf文件,并完成以下操作:
(1)指出该文件中设置imklog的所在行
●命令模式输入/imklog,按Enter启动正向搜索。
●使用n跳转到下一个匹配项,N返回上一个。
●注意:若需记录行号,可在命令模式输入:set nu显示行号。
(2)将光标移到该行,并复制该行内容
●光标定位到目标行后,输入yy复制整行。
●扩展:3yy可复制从当前行开始的3行内容(下面是复制三行的示例)。
(3)将复制内容粘贴到最后一行
●输入G跳转至文件末尾,按p将内容粘贴到下一行(默认行为)
(4)撤销上一步的粘贴动作
●按u撤销最后一次操作。
●重做:若误撤销,可通过Ctrl + r恢复。
(5)将光标移到“#Everybody gets……”,删除该行
●定位到#Everybody gets...所在行,按dd删除整行。
●替代方案:使用:g/^#Everybody/d全局删除所有匹配行。
(6)存盘但不退出
●命令模式输入:w,文件即时保存但保持编辑状态
:●注意输入命令:wq的话是保存然后退出,不能保持编辑状态
(7)将光标移至首行,并输入你的学号姓名等信息
●输入gg跳转至首行,按i在首行上方插入新行,如下图。
●输入学号、姓名等信息后,按Esc返回命令模式
(8)向下查找字符串“Directory”
●向下查找Directory:输入:/Directory并回车,具体操作结果如下图
(9)向上查找刚才新添加的姓名学号字符串
●向上查找姓名学号:输入:?姓名学号并回车,使用N反向遍历,具体操作结果如下图。
●高亮优化:通过:set hls启用搜索结果高亮显示。
(10)强制退出vi/vim,不存盘
●输入:!q忽略所有修改并强制退出编辑器
●输入:!wq是强制保存并且退出
●如果你不想加!来强制退出vi/vim,那么你在进入vim编辑时要以root权限编辑:例如命令:sudo vim rsyslog.conf
三、实验总结
1. 核心技能掌握与认知提升
(1)Linux命令行操作逻辑的深化理解:
通过mkdir和cp命令的实践,理解了路径参数的重要性。例如:
●绝对路径与相对路径:\~/vitest_zhangsan中的\~表示用户家目录,而/etc/syslog.conf为绝对路径,需注意路径符号的适用场景。
●权限管理意识:普通用户复制系统文件时可能因权限不足失败,需主动使用sudo提权或检查文件所有权(ls -l)。
(2)vim编辑器核心能力的突破:
●多模式切换:深刻体会命令模式(移动、复制)、插入模式(编辑文本)、末行模式(保存退出)的差异。例如,在插入学号信息时,需先通过O或i进入插入模式,完成后必须按Esc返回命令模式才能执行保存操作。
●高效导航技巧:gg(跳转首行)、G(跳转末行)、/和?(双向搜索)大幅提升文件浏览速度,尤其适用于大型配置文件。
●撤销与重做机制:u(撤销)和Ctrl+r(重做)的灵活使用,降低了误操作风险。例如,误粘贴后迅速撤销,避免错误留存。
2. 操作难点与问题剖析
(1)权限管理与提权操作:
●问题场景:初次执行cp /etc/syslog.conf时因权限不足报错Permission denied。
●解决方案:通过sudo cp提权,并理解/etc目录的系统保护性质。
●反思:需养成检查文件权限的习惯(ls -l),区分用户权限与系统保护文件。
(2)vim模式切换的误操作:
●典型错误:在插入模式下尝试执行yy复制命令,导致输入字符yy而非触发复制操作。
●改进方法:强化模式意识,通过状态栏(-- INSERT -- 提示)或光标形状(如块状与线状)快速识别当前模式。
(3)字符串搜索的精准性:
●问题场景:搜索mail时可能匹配到EMAIL等无关内容(若未区分大小写)。
●优化技巧:
①使用/\Cmail强制区分大小写(\C表示Case-sensitive)。
②通过:set hls(高亮搜索)直观定位所有匹配项。
3. 技能应用与未来学习方向
(1)运维场景的实战价值:
●配置文件编辑:掌握vim操作后,可快速修改Nginx、Apache等服务的配置文件,例如调整日志路径或注释无用模块。
●日志分析基础:通过本实验对syslog.conf中mail、authpriv等日志规则的理解,为后续分析/var/log日志文件奠定基础。
(2)进阶学习计划:
●vim高阶功能:
①宏录制(Macro) :通过qa开始录制宏,q结束,@a执行,用于重复性编辑任务。
②分屏编辑::vsp(垂直分屏)、:sp(水平分屏),同时编辑多个文件。
●Shell脚本整合:将vim操作写入脚本,例如自动插入文件头注释:
#!/bin/bash vim -c "normal ggO// 作者:张三" -c "wq" file.txt |
●正则表达式应用:结合:%s/old/new/g实现批量替换,例如将文件中所有error替换为ERROR。
4. 对Linux系统设计的思考
●“一切皆文件”理念的实践印证:
从syslog.conf的配置中看到,Linux将日志分类(mail、authpriv等)抽象为文件路径,体现了通过文件接口统一管理资源的哲学。
●命令行与GUI工具的取舍:
在高效运维场景下,命令行操作(如vim)的速度远超GUI工具,尤其在远程服务器管理中不可或缺。
5. 实验对个人能力的长期影响
●自主解决问题能力的提升:
通过查阅man vim、在线文档(如vimtutor)解决操作疑惑,培养了技术自学能力。
●细节把控意识的增强:
例如,在插入个人信息时需精确到行首,避免因空格错位导致配置语法错误。
●跨平台技能迁移:
vim的快捷键逻辑(如dd删除行)与VS Code、IntelliJ等编辑器的Vim插件兼容,未来可无缝衔接开发环境。
总结:本次实验不仅强化了Linux基础操作和vim核心技能,更培养了系统化思维与问题拆解能力。未来将持续探索自动化脚本编写、正则表达式优化等方向,向高效运维和开发的全栈能力迈进。
相关文章:
Linux操作系统实验报告单(3)文本编辑器vi/vim
一、实验目的 掌握vi/vim编辑器的进入和退出方式了解vi/vim的三种模式熟练vi/vim的操作命令 二、实验内容 1.在家目录下新建一个名为“vitest_name”(“name”为学生姓名拼音)的目录。 ●创建用户目录命令:sudo mkdir /home/vitest_lw3613 …...
docker linux 常用操作命令
以下是 Docker 的常见操作命令及其简单介绍,帮助你快速上手 Docker 的基本使用: 1. 镜像操作 拉取镜像 docker pull 镜像名称:标签示例: docker pull ubuntu:20.04从 Docker Hub 拉取 Ubuntu 20.04 镜像。 拉取镜像 docker build -t"…...
除自身以外数组的乘积——面试经典150题(力扣)
题目 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时…...
打破煤矿通信屏障,无线系统赋能生产安全与智能进阶
项目背景 在煤矿行业智能化转型的浪潮中,七台河矿业局积极回应国家煤矿智能化建设的号召,采取了具有前瞻性的战略举措——在七台河地区的煤矿部署了“井上井下”无线覆盖与广播一体化系统。此举旨在消除井上与井下之间的通信障碍,加强矿业局与…...
DeepSeek + Kimi 自动生成 PPT
可以先用deepseek生成ppt大纲,再把这个大纲复制到Kimi的ppt助手里: https://kimi.moonshot.cn/kimiplus/conpg18t7lagbbsfqksg 选择ppt模板: 点击生成ppt就制作好了。...
Blender标注工具
按住键盘D键 鼠标左键绘制 / 右键擦除 也可以在上方选择删除...
鸿蒙开发:远场通信服务rcp拦截器问题
前言 本文基于Api13。 上篇文章,简单的对rcp中的会话问题做了概述,本篇文章,我们聊一聊rcp中的拦截器问题,按照正常开发,其实拦截器中也不存在问题的,毕竟都是很官方的开发方式,但是在结合了创建…...
调研报告:Hadoop 3.x Ozone 全景解析
Ozone 是 Hadoop 的分布式对象存储系统,具有易扩展和冗余存储的特点。 Ozone 不仅能存储数十亿个不同大小的对象,还支持在容器化环境(比如 Kubernetes)中运行。 Apache Spark、Hive 和 YARN 等应用无需任何修改即可使用 Ozone。Ozone 提供了 Java API、S3 接口和命令行接口…...
Thinkphp 多文件压缩
控制器 <?phpnamespace app\api\controller; use think\Controller; use think\facade\Db; use think\facade\Request;use ZipArchive;class DrugTestResult {public function download(){if(Request::isPost()){$data Request::post();$idnumber Request::param(idnumb…...
NGINX中的反向代理实践
以下是一个全面和优化的配置示例,包括了错误处理、超时设置、头部信息调整等: server {listen 80;server_name your.domain.name; # 替换为你的实际域名或IP地址# 前端应用的静态资源处理location / {root /path/to/vue/dist; # Vue 应用的dist目录try_…...
redis分布式锁实现Redisson+redlock中watch dog是如何判断当前线程是否持有锁进行续租的呢?
在 Redis 中,Watch Dog(看门狗)机制主要用于实现分布式锁的自动续期(如 Redisson 的 RedLock 实现)。其核心目的是确保当业务逻辑执行时间超过锁的初始过期时间(leaseTime)时,锁不会…...
[spring] Spring JPA - Hibernate 多表联查 1
[spring] Spring JPA - Hibernate 多表联查 1 之前在 [spring] spring jpa - hibernate 名词解释&配置 和 [spring] spring jpa - hibernate CRUD 简单的学习了一下怎么使用 Hibernate 实现 CRUD 操作,不过涉及到的部分都是逻辑上比较简单的实现——只在一张表…...
在 Elasticsearch 中探索基于 NVIDIA 的 GPU 加速向量搜索
作者:来自 Elastic Chris Hegarty 及 Hemant Malik 由 NVIDIA cuVS 提供支持,此次合作旨在为开发者在 Elasticsearch 中的向量搜索提供 GPU 加速。 在 Elastic Engineering 组织内,我们一直致力于优化向量数据库的性能。我们的使命是让 Lucen…...
2025年图生视频模型技术全景解析
一、开源图生视频模型 阿里通义万象Wan2.1系列 I2V-14B-480P: 14B参数基础模型支持480P分辨率图生视频显存需求16GB以上 I2V-14B-720P: 高清增强版模型采用分帧渲染技术,输出分辨率达1280720 技术特性: 支持中文提示词自动解析内置…...
Docker build 会在本地产生巨大的文件
Docker build 会在本地产生巨大的文件, 比如 用 这个命令列出本地镜像 docker images 可见size都是很大的, 到docker目录下,看到ext4.vhdx的大小 80多G 那只能用这个命令把不用的镜像删掉了: (rmi后面是镜像id&a…...
使用LLaMA Factory微调导出模型,并用ollama运行,用open webui使用该模型
本篇记录学习使用llama factory微调模型的过程,使用ollama运行微调好的模型,使用open webui前端调用ollama的模型; 测试机信息: 系统:Ubuntu 24.04.2 LTS(桌面版) cpu:i9-14900KF …...
Git远程拉取和推送配置
Git进行远程代码拉取和推送时候提示配置user.name 和 user.email 背景:换新电脑后使用Git进行代码拉取和推送过程中,提示“Make sure you configure your “user.name” and “user.email” in git.”。这个配置针对git的正常使用仅需要配置一次…...
正则魔法:解码 return /^\d+$/.test(text) ? text : ‘0‘ 的秘密
🚀 正则魔法:解码 return /^\d$/.test(text) ? text : 0 的秘密 🌟 嘿,技术探险家们!👋 今天我们要破解一段看似简单的代码:return /^\d$/.test(text) ? text : 0。它藏在一个 Vue 前端组件中…...
[023-01-47].第47节:组件应用 - GetWay与 Sentinel 集成实现服务限流
SpringCloud学习大纲 一、需求说明: 实现网关cloudalibaba-sentinel-gateway9528模块保护cloudalibaba-provider-payment9001 二、编码实现: 2.1.建module: 新建模块,名称是:cloudalibaba-sentinel-gateway9528 2.2.改pom &l…...
【自用】NLP算法面经(5)
一、L1、L2正则化 正则化是机器学习中用于防止过拟合并提高模型泛化能力的技术。当模型过拟合时,它已经很好地学习了训练数据,甚至是训练数据中的噪声,所以可能无法在新的、未见过的数据上表现良好。 比如: 其中,x1和…...
AI视频生成产品体验分享(第2趴):Vidu、Hailuo、Runway、Pika谁更胜一筹?
hi,大家,继上次体验完可灵、即梦和pixverse,今天打算从产品经理的角度再研究下Vidu、Hailuo、Runway、Pika这几款产品!欢迎加入讨论! 一、产品简介 1. Vidu:国产自研的「一致性标杆」 📌官网…...
火绒终端安全管理系统V2.0——行为管理(软件禁用+违规外联)
火绒终端安全管理系统V2.0:行为管理策略分为软件禁用和违规外联两部分,能够管理终端用户软件的使用,以及终端用户违规连接外部网络的问题。 l 软件禁用 软件禁用策略可以选择软件名单的属性、添加软件名单以及设置发现终端使用禁用软件时的…...
台式机电脑组装---电脑机箱与主板接线
台式机电脑组装—电脑机箱与主板接线 1、机箱连接主板的跳线一般主要有USB 2.0、USB 3.0、前置音频接口(HD_AUDIO)以及POWER SW、RESET SW、POWER LED、HDD LED四个主板跳线,这些跳线分别的含义如下。 RESET SW:机箱重启按键;注:…...
【总结】常用API架构类型
引言 在现代软件开发中,API(应用程序编程接口)已经成为各类系统之间交互的核心。不同的 API 架构类型适用于不同的业务需求和技术场景,选择合适的架构可以提高系统的性能、可维护性和扩展性。本文将介绍几种常见的 API 架构类型,并分析它们的…...
ffmpeg库视频硬解码使用流程
FFmpeg 的硬解码(Hardware Decoding)通过调用 GPU 或专用硬件的编解码能力实现,能显著降低 CPU 占用率。 一、FFmpeg 支持的硬件解码类型 FFmpeg 原生支持多种硬件加速类型,具体由 AVHWDeviceType 定义,包括&…...
两个常用的用于读写和操作DXF文件C#库:netDxf 和 DXF.NET
netDxf 和 DXF.NET 是两个常用的C#库,用于读取、写入和操作DXF文件。以下是它们的详细介绍和用法示例。 1. netDxf 简介 netDxf 是一个开源的DXF文件读写库,支持AutoCAD DXF格式的读取和写入。它支持大多数DXF实体和对象,并且易于使用。 Gi…...
jmeter吞吐量控制器-Throughput Controller
jmeter吞吐量控制器-Throughput Controller 新增吞吐量控制器名词解释测试场景场景1:场景2:场景3场景4场景5场景6场景7场景8 测试结论 根据百分比执行不同的接口测试场景测试结果 新增吞吐量控制器 名词解释 Based on: Total Executions(总执行数)/Perc…...
windows 平台编译openssl
文章目录 准备环境安装perl安装NASM获取源码 源码编译配置编译 准备环境 安装perl 下载Perl 5.40.0.1 Portable zip strawberryperl 解压后设置系统环境变量 测试安装是否成功 perl --versionThis is perl 5, version 40, subversion 0 (v5.40.0) built for MSWin32-x64-m…...
【Linux】Makefile秘籍
> 🍃 本系列为Linux的内容,如果感兴趣,欢迎订阅🚩 > 🎊个人主页:【小编的个人主页】 >小编将在这里分享学习Linux的心路历程✨和知识分享🔍 >如果本篇文章有问题,还请多多包涵&a…...
Python散点图(Scatter Plot):数据探索的“第一张图表”
在数据可视化领域,散点图是一种强大而灵活的工具,它能够帮助我们直观地理解和探索数据集中变量之间的关系。本文将深入探讨散点图的核心原理、应用场景以及如何使用Python进行高效绘制。 后续几篇将介绍高级技巧、复杂应用场景。 Python散点图(Scatter Plot):高阶分析、散点…...
Spring AI Alibaba快速使用
AI 时代,Java 程序员也需要与时俱进,这两个框架必须掌握。 一个是 Spring AI一个是 Spring Alibaba AI。 Spring AI 是一个AI工程领域的应用程序框架,它的目标是将 Spring生态系统的设计原则应用于人工智能领域。 但是, Spring…...
Redis 跳表原理详解
一、引言 在 Redis 中,有序集合(Sorted Set)是一种非常重要的数据结构,它可以实现元素的有序存储和高效查找。而实现有序集合的底层数据结构之一就是跳表(Skip List)。跳表是一种随机化的数据结构ÿ…...
安全地自动重新启动 Windows 资源管理器Bat脚本
安全地自动重新启动 Windows 资源管理器脚本 可以直接运行的 Windows 批处理脚本,用于安全地自动重新启动 Windows 资源管理器。该脚本会在杀死资源管理器之前检查是否有其他进程正在使用资源管理器相关的文件。 Bat脚本 echo off title 资源管理器安全重启工具 co…...
【C++模板】
模板初阶 前言1.定义模板2.函数模板2.1定义2.2实例化函数模板2.3模板参数的匹配原则 3.类模板3.1类模板实例化 前言 模板是C中泛型编程的基础,一个模板就是一个创建类和函数的蓝图或公式。 1.定义模板 假定我们希望编写一个函数来比较两个值,并指出第…...
基于Debian搭建FTP服务器
操作系统 Debian-9.6.0-amd64,图形化安装 基础操作 1.软件安装管理 命令方式: 在线安装 sudo apt-get install vim/ifconfig 查看安装软件 dpkg -l 图形化桌面方式 : 通过“软件管理”工具管理 2.网络管理 /etc/network/interfaces 3.文本…...
如果我的项目是用ts写的,那么如何使用webpack的动态导入功能呢?
在 TypeScript 项目中使用 Webpack 的动态导入(Dynamic Imports)功能,需要结合 TypeScript 的语法和 Webpack 的配置。以下是具体实现方法和注意事项: 一、基础配置 1. 修改 tsconfig.json 确保 TypeScript 支持动态导入语法&am…...
构建高效的LinkedIn图像爬取工具
一. 项目背景与目标 LinkedIn上的用户头像数据可以用于多种场景,例如: 人才招聘:通过分析目标职位候选人的头像,了解其职业形象。市场调研:收集特定行业从业者的头像,用于分析职业群体的特征。学术研究&a…...
在windows下安装windows+Ubuntu16.04双系统(下)
这篇文章的内容主要来源于这篇文章,为正式安装windowsUbuntu16.04双系统部分。在正式安装前,若还没有进行前期准备工作(1.分区2.制作启动u盘),见《在windows下安装windowsUbuntu16.04双系统(上)》 二、正式安装Ubuntu …...
浅分析 PE3R 感知高效的三维重建
"近期,二维到三维感知技术的进步显著提升了对二维图像中三维场景的理解能力。然而,现有方法面临诸多关键挑战,包括跨场景泛化能力有限、感知精度欠佳以及重建速度缓慢。为克服这些局限,我们提出了感知高效三维重建框架&#…...
调和Django与Sql server2019的关系
数据库升级成sqlserver2019后,用户发现一些APP不能用了,检查发现是Django连接sqlserver的APP全部不能用了,页面打开都是500错误,进入Pycharm调试发现: 1.遇到错误1:django.db.backends.XXX错误 File "…...
【canvas】一键自动布局:如何让流程图节点自动找到最佳位置
一键自动布局:如何让流程图节点自动找到最佳位置 引言 在流程图、拓扑图和系统架构图设计中,节点布局往往是最令人头疼的问题。如果手动调整每个节点位置,不仅耗时费力,还难以保证美观性和一致性。本文将深入解析如何实现自动布…...
Flutter 学习之旅 之 flutter 使用 SQLite(sqflite) 实现简单的数据本地化 保存/获取/移除/判断是否存在 的简单封装
Flutter 学习之旅 之 flutter 使用 SQLite(sqflite) 实现简单的数据本地化 保存/获取/移除/判断是否存在 的简单封装 目录 Flutter 学习之旅 之 flutter 使用 SQLite(sqflite) 实现简单的数据本地化 保存/获取/移除/判断是否存在…...
[unity 组件] Content Size Fitter 横向填充不满解决办法
可以看到,当只有3个或者4个元素的时候,布局组件并没有将横向宽度占满来布局。之所以有此困惑的原因是我以为他的布局策略是,从左到右,从上至下,尽量占满空间,不够了再换行,其实不然。 5到6个元…...
Dify 项目开源大模型应用开发平台
Dify 是一款开源的大语言模型(LLM)应用开发平台,旨在简化生成式 AI 应用的创建、部署和持续优化流程。以下从多个维度对该项目进行详细介绍: 一、项目定义与核心功能 Dify 的核心定位是结合 后端即服务(BaaSÿ…...
使用 `pytest` 框架时,可以通过极限封装将 YAML 文件的读取、解析
在使用 pytest 框架时,可以通过极限封装将 YAML 文件的读取、解析和测试用例的通用逻辑封装成共享的方法或 fixture,从而减少重复代码。以下是详细的实现步骤和示例。 1. 封装 YAML 文件读取和解析 将 YAML 文件的读取和解析逻辑封装到一个工具函数中,供所有测试用例调用。…...
算法刷题记录——LeetCode篇(2) [第101~200题](持续更新)
(优先整理热门100及面试150,不定期持续更新,欢迎关注) 101. 对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入&am…...
ruoyi 小程序使用笔记
1.上传图片 页面 <uni-forms-item label"退休证明(退休证)" name"retire"><uni-file-picker ref"imageUploadRetire" :limit"1" :auto-upload"false" select"upload"/> </uni-forms-item>js …...
计算机网络——总结
01. 网络的发展及体系结构 网络演进历程 从1969年ARPANET的4个节点发展到如今覆盖全球的互联网,网络技术经历了电路交换到分组交换、有线连接到无线覆盖的革命性变革。5G时代的到来使得网络传输速度突破10Gbps,物联网设备数量突破百亿级别。 网络体系…...
Stable Diffusion lora训练(一)
一、不同维度的LoRA训练步数建议 2D风格训练 数据规模:建议20-50张高质量图片(分辨率≥10241024),覆盖多角度、多表情的平面风格。步数范围:总步数控制在1000-2000步,公式为 总步数 Repeat Image Epoch …...
再学:ERC20-Permit2、SafeERC20方法 详解ERC721,如何铸造一个NFT以及IPFS的作用
目录 1.Permit2 2.尽量使用Safe方法 3.ERC721 4. 铸造NFT 1.Permit2 针对没有permit的代币实现的线下签名方式 通过approve方法,让Permit2拿到无限次数的授权。拿到授权之后,Permit2会生成签名。 当用户需要转账的时候,Permit2会发送签…...