【从零开始学习Linux】一文带你了解yum周边生态及vim常见模式

news2025/1/15 16:57:27

🚩纸上得来终觉浅, 绝知此事要躬行。
🌟主页:June-Frost
🚀专栏:Linux入门

🔭【从零开始学习Linux】系列均属于Linux入门,主要包含Linux操作系统下的指令、操作、权限以及开发工具,使得拥有基本编写代码的能力。

🔥该文章旨在深入探讨Linux工具,其中包括yum的使用方法和周边生态,以及vim的常见模式和操作方法。

目录:

  • 🔎前言:
  • ⏳包管理工具 yum
    • ✉️使用yum
    • ✉️周边生态问题
  • ⏳文本编辑器 vim
    • ✉️模式
    • ✉️基本操作
    • ✉️一些小tips
  • ❤️ 结语

🔎前言:

  在之前的博客中,我们介绍了Linux操作系统的一些基本指令和权限管理。接下来,我们将深入探讨基础开发工具,这些工具为开发者提供了一个完善且高效的开发环境,帮助用户进行软件编程、代码调试、版本控制等一系列操作。

 yum作为Linux系统的包管理器,能够方便、快捷地安装和管理软件包。而vim作为一款强大的文本编辑器,在Linux开发中扮演着重要的角色,掌握vim的基本操作和命令,能够提高代码编辑的效率。

 通过本文的介绍,希望能让你在软件管理和文本编辑方面有所收获。


⏳包管理工具 yum

 Linux中安装软件的方式大概有三种:

  • 源码编译安装

由于Linux系统的开源特性,与它伴生的有很多开源软件。我们可以把软件的源程序代码编译为可执行的二进制代码,再把二进制代码文件复制到系统指定位置。但是这种方式必须找到正确的源码和版本,而且在编译过程中,会依赖于特定的编译器和库版本。如果系统环境不符合编译所需的最低要求,或者编译器、库的版本不匹配,就可能出现不兼容的情况,为了解决这类问题,可能还需要进行交叉编译,这种方式无疑会很繁琐。

  • RPM包直接安装

 Linux社区的工作者提供了RPM包,里面包含了应用程序本身、其依赖项、配置文件、文档等一系列组件,用户可以将其下载并直接安装。

  • yum

 yum是一个在Fedora、RedHat以及CentOS中的Shell前端软件包管理器,我们可以将其看作应用商店。它基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。Linux系统中也预装了指令yum,可以帮助我们搜索,下载,安装软件


✉️使用yum

  • 命令yum list
  • 功能:列出所有可用的软件包。
  • 说明:它能够查询yum源中的软件包及其详细信息,包括软件包的名称、版本、大小、类型、打包格式等等,以及提供软件包的描述、依赖关系和可选的软件包组列表。

 由于可用的安装包数量很多,所以通常会使用命令grep进行筛选,从而找到我们所关注的安装包 (这种操作类似于在软件商城中搜索软件)。

 有两个因素可以影响一个软件的运行。一个是硬件架构,有些软件需要在特定的cpu下运行,例如上图的软件需要的架构就是x86_64 。另一个是操作系统,在Windows操作系统下编译的可执行程序和在Linxu操作系统下编译的可执行程序是不互通的。

📙yum会根据当前的操作系统版本软件源配置,自动获取并推荐符合当前系统的软件版本

  • 命令yum install [选项] 软件包名
  • 功能下载并安装指定的软件包,并自动处理其依赖关系。
  • 常用选项-y 表示在安装过程中自动应答所有问题(默认情况下,yum需要用户手动确认是否安装依赖包等操作)。

 yum将软件下载后,还会进行安装操作,即需要将可执行程序,配置文件,日志信息等拷贝到系统特定目录下。对于一个普通用户来说,有些目录是没有写权限的,这就会导致安装软件失败,所以一般执行yum install命令时,需要加上sudo或者切换为root身份

📗与安装软件类似,如果要卸载一个软件,可以使用命令yum remove [选项] 软件包名,这个命令也需要sudo或者root身份


✉️周边生态问题

 当我们在自己的Linux机器上使用yum listyum install等指令时,其实是向一个Linux的远端服务器提供了一个申请,这个服务器包含了各种各样的软件,例如treelrzsz等一些列工具,所以也可以对其称之为yum的远端指令仓库。

📗探讨yum的生态问题,可以从硬件和软件层面入手,关注服务器及其软件的提供商及提供的原因。

 如果要选择一款操作系统,通常不只是需要考虑操作系统本身,它们的效率相差不大,更加关注的应该是操作系统的其他因素。例如:

  • 操作系统的版本可以反应出历史涵盖的bug问题。

  • 使用操作系统的用户人数可以反应出社区活跃度,大量用户的使用可以使得系统问题暴露的很充足,相应的,在论坛中也会有很多解决方式。当其他用户或企业在使用该系统时,就拥有了解决问题的渠道。

  • 操作系统的周边配套资源充足程度,文档的全面程度,更新速度等

不同操作系统的侧重点不同,会吸引不同的人群,这就会使得社区的核心资料不同,软件工具不同,这导致整个生态出现了不同的侧重点。例如,CentOS的目标受众是企业和生产环境中的服务器用户,Kali Linux主要面向渗透测试和网络安全领域。

 随着操作系统产生的一系列问题被收集,并不断的被解决,系统会不断优化,这就会使得一些软件开发者,企业等一些收益群体产生依赖,这些群体会更加希望这款操作系统变好,于是就会为其提供服务器以促进发展。一些有能力和资源的人也会成为出力者,为系统提供软件工具。这些做法都会推动系统的发展。

📗生态问题还涉及yum如何获取目标服务器地址和下载链接。这是由于系统里有一些配置文件,即yum的本地仓库源,当使用yum命令安装时,会读取配置文件,对配置文件中的指定链接进行访问。

基础软件源和扩展软件源

 Linux系统的基础软件源和扩展软件源都是存放软件包的地方。基础软件源通常包含操作系统的核心组件和常用工具,而扩展软件源则包含额外的软件包,如特定的应用程序或驱动程序。

  • 基础软件源:这是默认的、自带的软件源,主要用于安装操作系统的核心组件和基本工具。对于衍生发行版如CentOS,其自带的yum源有时内容更新可能比较滞后

  • 扩展软件源:为了弥补基础软件源的不足或增加额外的软件包,用户可以选择添加扩展软件源。例如,epel就是一个常见的扩展源,它提供了许多在标准CentOS源中不可用的应用程序和工具。

 一般来说,新的软件会放入扩展软件源里,如果使用多,够成熟,就会移出一部分放入基础软件源中。这种做法可以保持软件有一定的更新速度,也不会因为有问题的软件被放入基础软件源而出现一系列问题,而且在过渡的过程中可以淘汰一些不好的软件。


⏳文本编辑器 vim

 Vim是一款多模式编辑器,相比于vi,它不仅完全兼容vi的命令,而且在易用性、可定制性和可视化操作方面表现得更加出色。它支持多级撤消,可以无限制地撤消之前的操作,并具有语法加亮功能,可以用不同的颜色来突出显示不同的语法元素。除此之外,vim可以在多个平台上运行,不仅可以在unix和类unix系统中使用,也可以在windows、mac os等其他操作系统中运行(vi只能在unix中运行)。

✉️模式

  Vim有三种最常见的模式,分别为命令模式,插入模式,底行命令模式。

  • 命令模式:这是Vim的默认模式,所有的输入都会被当作命令来处理,在该模式下不能对文件直接进行编辑,但可以对文件进行操作(删除行、复制行、移动光标、粘贴等)

  • 插入模式:在该模式下可以对文件内容进行编辑。

  • 底行模式:可以在底行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等)。

模式之间的转换方式:

 命令模式下可以输入i,o,a 其中一个切换到插入模式。

注意:

  • i 从目前光标当前位置开始输入文字。
  • a 从目前光标所在位置的下一个位置开始输入文字。
  • o 在当前光标所在处的下一行处插入新的一行,从行首开始输入文字。

 在插入模式和底行模式之间,无法直接进行切换,需要先切换到命令模式,再从命令模式进行切换。


✉️基本操作

命令模式下的相关操作

📙光标定位:

  • h 将光标向左移动。
  • j 将光标向下移动。
  • k 将光标向上移动。
  • l 将光标向右移动。
  • $ 将光标定位在当前行的最右侧结尾处。
  • ^ 将光标定位在当前行的最左侧开头处。
  • G 将光标定位到文本结尾处,也可以 [输入数字]+G 将光标定位到指定行。
  • gg 将光标定位到文本最开始。
  • w 按照”单词“向进行行内移动。
  • b 按照”单词“向进行行内移动。

📙文本编辑:

  • yy 复制当前行,也可以 [输入数字] + yy 复制多行,例如,输入3yy命令可以复制当前行及其下面两行的文本。
  • p 在下一行进行粘贴,也可以[输入数字] + p进行多次复制。
  • u 撤销编辑操作。
  • ctrl + r 对撤销进行恢复,例如,当你使用u对一个操作进行撤销后,如果突然”反悔“了,可以使用ctrl + r对撤销进行撤销。
  • dd 删除当前行,同理,该操作也可以使用[输入数字] + dd删除多行。注意,如果使用dd后,再使用 p,该操作就会成为剪切。

📙细力度编辑:

  • ~ 进行大小写快速切换。
  • r 替换当前光标所在字符,可以使用[输入数字] + r对多个字符同时替换。
  • R 切换为替换模式,此时,屏幕左下角会出现“–REPLACE–”字样,在该模式下,输入的字符将替换光标所在位置的字符或连续替换光标及其后边的字符。
  • x 删除光标所在字符,也可以使用[输入数字] + x删除字符,这种是向后删除。
  • X 删除当前光标的前一个字符,可以使用[输入数字] + X进行局部性删除。
  • # 高亮要查找的函数名,使用n进行跳转。
底行模式下的相关操作
  • w 保存文件。
  • q 退出Vim编辑器。

🔭注意:这两个命令可以前面加上!表示强制执行,通常用于在特定情况下快速执行操作,例如当文件被锁定或发生其他异常情况时。在使用强制命令时需要谨慎,它们可能会导致文件内容丢失或其他不可逆的后果。

  • ![命令] 可以在不退出vim的情况下执行Shell命令。
  • vs [文件名] 将创建一个新窗口并加载指定的文件。如果没有这个文件,会自动创建文件(如果没有对这个文件进行任何写入,当底行输入wq时会创建文件,如果只是输入q退出,则不会创建该文件)。ctrl + ww命令可以实现光标在多个终端之间切换,光标在哪个界面,对应就会编辑哪个界面。

✉️一些小tips

📗 ① 批量化注释:

 使用命令ctrl + v进入可视模式,通过hjkl 等命令进行区域选择,再使用 I (shift + i) 命令,输入//之后,点击Esc

 如果要取消注释,可以进入可视模式之后进行区域选择,再使用d命令。

📗② 代码编译错误后,如果直接打开vim修正代码,光标会停留在上次编辑时停留的地方。根据报错时显示的行号,我们可以使用 vim [文件名] [+行数] 快速定位到有问题的区域。

📗③ vim异常退出后的处理方式:

 假设存在一个文件,当使用vim写了一些代码后因为某些原因异常退出了,当再次使用vim打开文件时,会出现以下画面:

 可以先输入R进行恢复,之后用vim打开文件后将再次出现该画面,这时候可以输入D来删除因异常退出而产生的错误文件,此时,该文件之后就可以正常编辑了。

 如果采用直接输入D或直接删除产生的临时文件,这会导致异常产生之前所写的内容直接消失。


❤️ 结语

 文章到这里就结束了,如果对你有帮助,你的点赞将会是我的最大动力,如果大家有什么问题或者不同的见解,欢迎大家的留言~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1266516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿运主动安全监控云平台存在任意文件读取漏洞 附POC

@[toc] 鸿运主动安全监控云平台存在任意文件读取漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途…

【Rust】快速教程——自定义类型、数字转枚举、Cargo运行

前言 超过一定的年龄之后,所谓人生,无非是一个不断丧失的过程而已。宝贵的东西,会像梳子豁了齿一样从手中滑落下去。你所爱的人会一个接着一个,从身旁悄然消逝。——《1Q84》 \;\\\;\\\; 目录 前言自定义类型数字转枚举Cargo.tom…

肖sir__mysql之单表练习题2__(2)

mysql之单表练习题 一.建表语句 create table grade(class int(4),chinese int(8),english int(4),math int(8),name varchar(20),age int(8),sid int(4)primary key auto_increment) DEFAULT charsetutf8; insert into grade(class,chinese,english,math,name,age)values(1833…

Maven 介绍

文章目录 什么是 maven为什么要选择mavenmaven 仓库什么是maven中央仓库什么是maven本地仓库 idea如何创建出maven项目如何引入第三方库依赖配置国内源 下载 Maven Helper 插件查看各个项目之间的依赖关系 什么是 maven Maven是 Apache 下的一个纯 Java 开发的开源项目&#x…

idea下载与安装,以及创建一个项目写HelloWorld

1.idea下载 Download IntelliJ IDEA – The Leading Java and Kotlin IDE (jetbrains.com) Ultimate为旗舰版,功能全面,插件丰富,按年收费。 Community为社区版,免费试用,功能相对而言不是很丰富,但是不影…

C语言——数字金字塔

实现函数输出n行数字金字塔 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>void pyramid(int n) {int i,j,k;for (i1; i<n; i){//输出左边空格&#xff0c;空格数为n-i for (j1; j<n-i; j){printf(" "); } //每一行左边空格输完后输出数字&#…

Moonbeam生态项目分析 — — 去中心化交易所Beamswap

流动性激励计划Moonbeam Ignite是帮助用户轻松愉快体验Moonbeam生态的趣味活动。在Moonbeam跨链连接的推动下&#xff0c;DeFi的各种可能性在这里爆发。DeFi或许不热门&#xff0c;但总有机会捡漏&#xff0c;了解Monbeam生态项目&#xff0c;我们邀请Moonbeam大使分享他们的研…

10k热敏电阻温度对照表

10k热敏电阻阻值温度对数图 10k热敏电阻温度对照表 温度&#xff08;℃&#xff09;欧姆 -4033660033660-3931500031500-3829500029500-3727640027640-3625900025900-3524280024280-3422780022780-3321380021380-3220060020060-3118840018840-3017700017700-2916640016640-28…

PWM 正玄波形 通过C语言生成

#include <stdio.h> #include <math.h> #include <stdint.h>#define SAMPLE_POINT_NUM (200) /* 需要生成的点的个数 */ #define SINE_MAX (255) /* sin 函数幅值 */ #define PI (3.14…

dcat admin日志扩展 dcat-log-viewer 遇到的问题记录

扩展地址&#xff1a; https://github.com/duolabmeng6/dcat-log-viewer 问题描述&#xff1a; 使用很简单&#xff0c;直接安装扩展包&#xff0c;开启扩展就可以了&#xff0c;会自动生成菜单。 之前在别的系统用过&#xff0c;没问题&#xff0c;今天在一个新的系统用的时…

STM32F103C8T6第7天:智能小车项目

1. 智能小车&#xff1a;让小车动起来&#xff08;360.64&#xff09; 硬件接线 B-2A – PB0B-1A – PB1A-1B – PB2A-1A – PB10其余接线参考上官一号小车项目。 cubemx配置 代码&#xff08;28.smartCar_project1/MDK-ARM&#xff09; 2. 智能小车&#xff1a;串口控制小…

鸿蒙4.0开发笔记之ArkTS语法的基础数据类型[DevEco Studio开发](七)

文章目录 一、基本数据类型的定义1、变量声明2、数字类型3、字符串类型4、布尔类型5、数组类型6、元组类型7、枚举类型8、联合类型&#xff08;少用&#xff09;9、未知Unkown类型10、未定义和空值类型 二、数据类型的使用1、组件内部声明变量不需要使用let关键字2、使用Divide…

docker镜像分层、仓库、容器数据卷与常用软件安装

一、镜像分层 1、镜像概念&#xff1a; 镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;将应用程序和配置依赖打包好行成一个可交付的运行环境&#xff0c;这个打包好的运行环境就是image镜像文件。 2、镜像分层&#xff1a…

额,收到阿里云给的赔偿了!

众所周知&#xff0c;就在刚过去不久的11月12号&#xff0c;阿里云突发了一次大规模故障&#xff0c;影响甚广。 以至于连咱们这里评论区小伙伴学校的洗衣机都崩了&#xff08;手动doge&#xff09;。 这么关键的双11节点&#xff0c;这么多热门业务和产品&#xff0c;这么大规…

Python面试破解:return和yield的细腻差别

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享 Python面试破解&#xff1a;return和yield的细腻差别&#xff0c;全文3000字&#xff0c;阅读大约10钟。 在Python的函数编程中&#xff0c;return和yield是两个常用的关键词…

在Mysql中,什么是回表,什么是覆盖索引,索引下推?

一、什么是回表查询&#xff1f; 通俗的讲就是&#xff0c;如果索引的列在 select 所需获得的列中&#xff08;因为在 mysql 中索引是根据索引列的值进行排序的&#xff0c;所以索引节点中存在该列中的部分值&#xff09;或者根据一次索引查询就能获得记录就不需要回表&#x…

IELTS学习笔记_grammar_新东方

参考&#xff1a; 新东方 田静 语法 目录&#xff1a; 导学简单句… x.1 导学 学语法以应用为主。 基础为&#xff1a;单词&#xff0c;语法 进阶为&#xff1a;听说读写译&#xff0c;只考听说读写。 words -> chunks -> sentences, chunks&#xff08;语块的重要…

Linux MTR(My TraceRoute)command

Internet上有许多小型网络测试工具:Ping、Traceroute、Dig、Host等。 但是&#xff0c;这些工具的功能都比较单一。今天会给大家分享一个包含ping和traceroute功能的工具&#xff1a;MTR 文章目录 什么是MTR&#xff1f;MTR可以提供哪些功能Linux MTR可用选项Linux MTR用法推荐…

智能优化算法应用:基于鸡群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鸡群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鸡群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸡群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

使用vue-admin-template时,需要注意的问题,包括一定要去除mock.js注释

在使用vue-admin-template等前端框架时&#xff0c;如果你没有打算用他们的mock数据&#xff0c;在生产环境下一定要注释mock引用的代码&#xff0c;虽然它没有被调用&#xff0c;但是如果你不注释&#xff0c;就会被打包进去。 找到main.js&#xff0c;看如下代码&#xff1a…