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

June-Frost 2024-10-10 12:37:01 阅读 84

🚩纸上得来终觉浅, 绝知此事要躬行。

🌟主页: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

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

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

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

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

命令:<code>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 其中一个切换到插入模式。

注意:

<code>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进行跳转。

底行模式下的相关操作

<code>w 保存文件。q 退出Vim编辑器。

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

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


✉️一些小tips

📗 ① 批量化注释:

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

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

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

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

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

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

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


❤️ 结语

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。