Linux开发利器:探秘开源,构建高效——基础开发工具指南(上)【包管理器/Vim】


♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥

♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥

♥♥♥我们一起努力成为更好的自己~♥♥♥

♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥

♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥

✨✨✨✨✨✨个人主页✨✨✨✨✨✨

        前面的两篇博客,我们已经对Linux命令行的基础指令进行了简单的学习,更多的使用指令需要我们在实践中去积累,这一篇博客,我们将开启Linux新篇章——Linux下的基础开发工具~准备好了吗~我们发车去探索Linux的奥秘啦~🚗🚗🚗🚗🚗🚗

目录

软件包管理器😎

Linux下软件安装、查找与卸载方法😘

操作系统生态😊

Linux安装/删除/搜索软件实践操作😁

安装源😜

文本编辑器Vim🤔

简单程序引入🙂

命令模式🤪

底行模式😘

五种常用模式🤩

vim的配置🤨

补充:【!char】指令🤗


软件包管理器😎

Linux下软件安装、查找与卸载方法😘

        Linux下安装软件有下面的几种方式,在此之前我们需要明确一点软件之间是存在着依赖关系的【即一个软件在运行或执行某些功能时,需要依赖另一个软件或库的存在和正常工作】,我们可以手动解决~也可以使用到软件包管理器~

源码安装:直接通过源代码进行安装~

rpm安装方式:平时使用到的安装包本质在Windows下编译源代码后打包~

yum/apt工具级别【软件包管理器】安装

功能:自动提供软件并解决依赖关系~

比喻:软件包相当于APP,软件包管理器相当于应用商店~找到软件即可下载~

下面的图片显示了Linux下下载软件的过程:云服务器通过包管理器(如yum/apt)发起软件包查找和下载请求,软件包服务器响应并提供所需软件包~包管理器负责解决软件包间的依赖关系,确保软件正常运行,并执行下载、安装和卸载操作~

进一步理解软件包管理器:

        软件包管理器是一个工具,它负责自动化软件包的安装、更新、卸载等操作,并处理软件包之间的依赖关系~软件包管理器通过维护一个软件包仓库(类似于应用商店),用户可以从仓库中搜索、下载和安装软件包~

操作系统生态😊

        操作系统生态是以操作系统为核心,涵盖应用软件、硬件设备、开发者社区和用户群体的完整体系~它对于保障国家信息安全、推动技术创新和产业发展、提升操作系统市场竞争力和用户满意度具有重要意义~

        评价一个操作系统的好坏是通过操作系统生态进行评估的,而不是单独某一个方面进行评估~

 组成部分

 》操作系统内核和系统软件:

                作为生态的基础,提供运行环境和支持,包括系统调用、编译环境等。

 应用软件:

                满足用户在不同领域的需求,如办公、娱乐、教育等,是生态价值的重要体现。

 》硬件设备:

                确保操作系统与各种硬件的兼容性,包括计算机硬件、外设等,是生态稳定运行的基础。

  》开发者社区:

                活跃的开发者社区推动技术创新和生态发展,为开发者提供技术支持和分享经验。

  》用户群体:

                作为生态的最终受益者,用户的需求和反馈对生态发展至关重要。

        软件包管理是操作系统生态中的重要环节,涉及软件的安装、更新和卸载。一个完善的操作系统生态应提供便捷、高效的软件包管理工具和服务,以满足用户的不同需求。同时,软件包管理流程的优化和改进也有助于提升操作系统生态的完善程度和用户体验。

        也就有了下面的图片:

Linux安装/删除/搜索软件实践操作😁

        我们知道在操作系统中,不同的用户具有不同的权限,普通用户通常只能访问和修改自己的文件和目录,而无法对系统级别的文件和目录进行更改,而安装软件通常涉及到将软件文件复制到系统目录(如/usr/bin/usr/lib等),这些目录通常只有超级用户(如root)才有权限写入~所以Linux下安装软件,我们要以超级用户的身份进行安装!也就是说我们需要对普通用户进行权限提升(使用sudo)~

        小编使用的Linux发行版是Centos版本,所以使用yum软件包管理器,如果是Ubuntu可以使用apt软件包管理器~

我们这里测试下载一个比较好玩的,命令行输入sudo yum install sl

询问是否安装,确认输入y,否定输入n

安装完成!

使用sl:

就会出现一个跑起来的小火车~

如果我们想要删除这个软件就可以命令行输入:sudo yum remove sl

确认删除:

删除成功:

        我们可以发现安装的时候总是会询问我们是否安装,我们可以在命令行输入的时候加上【-y】选项就可以不询问直接进行安装了~

        有了安装和删除软件,我们知道平时应用商店还支持搜索查找软件,那么使用软件包管理器怎么搜索查找呢?我们可以使用接下来的两条命令:

sudo yum list | grep sl

  • sudo:以超级用户身份执行命令。
  • yum list:列出所有可用或已安装的软件包。
  • |:管道符,将前一个命令的输出作为后一个命令的输入。
  • grep sl:在yum list的输出中搜索包含字符串“sl”的行。grep是一个文本搜索工具,用于在输入中搜索匹配特定模式的行。

sudo yum search sl | grep sl.x86

  • sudo:同样以超级用户身份执行命令。
  • yum search sl:搜索名称或描述中包含字符串“sl”的软件包,与yum list不同,yum search更灵活,它会在软件包的名称和描述中搜索匹配项。
  • |:管道符,将yum search sl的输出传递给grep
  • grep sl.x86:在yum search sl的输出中搜索包含字符串“sl.x86”的行。这通常用于筛选出特定架构(如x86)的软件包。

总结

安装/删除软件【-y选项自己选择】

sudo yum install [-y] 你要安装的软件
sudo yum remove [-y] 你要删除的软件

搜索查找软件:

1、基于名称的直接过滤:使用sudo yum list | grep <关键词>,适用于已知软件包部分名称,快速列出匹配项。

2、基于描述的灵活搜索:使用sudo yum search <关键词> | grep <过滤条件>,适用于不确定名称但了解功能,可进一步筛选结果。

知道了如何安装/删除/搜索软件查找,我们就可以根据自己的实际需要进行操作了~

安装源😜

        安装源,也称为软件源或仓库,是操作系统用来获取和安装软件包的地方。它包含了软件包的元数据(如软件包名称、版本、依赖关系等)以及软件包本身。当用户使用软件包管理器(如yumapt等)来安装、更新或删除软件时,软件包包管理器会从安装源中获取所需的信息和软件包。

        在CentOS中,安装源通常通过.repo文件配置在/etc/yum.repos.d/目录下;而在Ubuntu中,标准源配置在/etc/apt/sources.list文件中,扩展源则可以通过在/etc/apt/sources.list.d/目录下添加配置文件来定义~

文本编辑器Vim🤔

        Vim 是 Linux 系统下广泛使用的多模式的文本编辑器,它源自 Unix 系统的经典编辑器 Vi,但进行了功能扩展和改进,类似于记事本的操作~

多模式编辑模式

命令模式(默认进入时的模式):通过快捷键执行移动、复制、删除等操作(如 dd 删除整行,yy 复制)

插入模式(写代码):按 i 进入文本输入状态【插入模式】,Esc 返回命令模式

可视模式:按 v 选择文本块,支持批量操作

底行模式:输入分号【:】进入底行模式,可以执行保存(:w)、退出(:q)、搜索替换(:%s/旧/新/g)等高级命令~使用Esc 返回命令模式~

简单程序引入🙂

接下来我们使用vim来编写一个小程序打印hello xiaodu:

1、创建新文件

vim code.c

输入命令后按回车,Vim会创建并且打开一个空白文件

2、进入插入模式编写代码

按键盘 i 键进入插入模式

输入代码:

3、保存并退出Vim

按 Esc 键退出插入模式

输入:进入底行模式

底行输入:【 :w 表示写入(保存)】【 :q 表示退出】【组合使用 :wq 即可保存退出】

 

       

4、编译程序

命令行输入:

gcc code.c -o code//-o code:指定输出文件名为code

5、运行程序

我们可以修改一下代码:

重新编译运行:

        我们知道默认进入的是命令模式,打开对应的文件的时候,我们可以命令行输入数字指定光标在第几行进行快速定位~注意带上【+】号~否则是其他的命令了~

通过这个小示例我们对vim的多模式编辑更加熟悉,接下来我们将更加详细的学习Vim这样一个强大的文本编辑器~

命令模式🤪

        命令模式(是默认进入时的模式):通过快捷键执行移动、复制、删除等操作(如 dd 删除整行,yy 复制),键盘的输入就会默认当作命令来看待~实际上是用命令进行文本编辑,提高编辑效率~

光标移动与定位

  • gg: 光标快速定位到文件最开始
  • shift+g = G: 光标快速定位到文件最结尾
  • n + shift+g = nG: 光标快速定位到文件的任意第n行
  • shift+6 = ^: 移动到当前行开始
  • shift+4 = $: 移动到当前行结尾
  • hjkl: 分别代表左、下、上、右方向移动(助记:jump向下跳,king王向上,键盘h在左、l在右)
  • n+w: 以“单词”为单位向后移动n个单词(可以跨行操作)
  • n+b: 以“单词”为单位向前移动n个单词(可以跨行操作)
  • n: 查找下一个匹配项

复制与粘贴

  • n+yy: 复制当前行,或复制当前行之后的n行(例如,3yy复制当前行及之后两行,共三行)
  • n+p: 粘贴到下一行,可以进行重复粘贴n次

删除与剪切

  • n+dd: 删除当前行及之后n-1行(例如,3dd删除当前行及之后两行,共三行),不做粘贴操作(p)即为剪切
  • dd+p: 剪切当前行并粘贴到下一行
  • n+x: 删除光标所在字符之后的内容(例,5x删除当前字符及之后4个字符,共5个字符)
  • n + shift+x = X: 删除光标所在字符之前的内容(例,2+X删除当前字符之前的2个字符)

修改与替换

  • n+r: 修改光标所在字符开始的n个字符为其他字符
  • shift+r = R: 让Vim进入替换模式,覆盖式进行替换,以后输入的内容直接进行替换~
  • shift+#: 选中一个单词(高亮),按n到下一个高亮显示的单词

大小写切换

  • shift+ · = ~: 快速的进行内容的大小写切换

批量化注释与去注释

  • 批量化注释
    • ctrl+v: 进入VISUAL BLOCK模式
    • hjkl: 在VISUAL BLOCK模式下移动光标,选中要注释的行或列,前面也可以加数字选择移动选择几位~
    • shift+i = I: 进入insert模式,输入注释符号(如//
    • esc: 退出insert模式,完成注释
  • 批量化去注释
    • ctrl+v: 进入VISUAL BLOCK模式
    • hjkl: 在VISUAL BLOCK模式下移动光标,选中要取消注释的行或列,以及取消的字符区域~
    • d: 删除注释符号

撤销操作

   u命令用于撤销上一次的操作,ctrl+r命令用于对u命令进行的撤销操作进行重做,即恢复被撤销的内容~

  • 未退出Vim时的撤销操作
    • ctrl+r命令可以对u命令进行的撤销操作进行重做,即恢复被撤销的内容。
    • 即使保存了文件,仍然可以使用u命令进行撤销操作。
  • 退出Vim后的撤销操作
    • 一旦退出Vim编辑器,就无法进行撤销操作了,这是因为Vim的撤销历史是保存在内存中的,退出后这些历史信息会被清除~

底行模式😘

        在命令模式下输入【:】冒号,也就是Shift+【;】分号就可以进入底行模式,可以使用下面的命令~

1. 保存退出

  • w : 保存当前文件。
  • q : 退出Vim编辑器。
  • wq : 保存当前文件并退出Vim编辑器。
  • ! : 强制执行命令,通常用于覆盖文件或忽略警告(例如 w! 强制保存只读文件,q!强制退出)。

2. 显示与隐藏行号

  • set nu : 在Vim编辑器中显示行号,方便定位和跳转。
  • set nonu : 隐藏Vim编辑器中的行号。

3. 执行外部命令

  • :!command : 在Vim编辑器中直接执行外部命令,例如 :!ls 可以列出当前目录下的文件,执行完毕后按 Enter 返回Vim

4. 窗口分割与切换

  • vs newfile : 垂直分割当前窗口,并在新窗口中打开一个新文件(或已存在的文件)

  • Ctrl + ww : 在垂直分割的窗口之间快速切换光标,方便多文件进行跨越编辑~

“光标在哪里,我们就在编辑那个文件!”,编辑操作始终围绕光标所在位置进行~

5. 文件打开与跳转

  • vim filename +n : 打开指定文件 filename,并直接跳转到第 n 行,方便快速定位到需要编辑的位置~

6.字符替换

  • %s/src/des/ : src为需要替换的字符串,des为新替换的字符串~

7.选定字符串高亮

  • /字符串 : 选定字符串会高亮显示,按n到下一个高亮显示的字符串

五种常用模式🤩

通过这些命令,我们可以发现还有替换模式和视图模式这两种常用模式~

  • 模式切换

    • 命令模式 → 输入模式i(插入,光标不动)、a(光标向后面移动一个字符)、o(光标向下移动有一个新行进行插入)等

    • 命令模式 → 替换模式R(大写,也就是Shift+r)

    • 命令模式 → 视图模式Ctrl+V(块选择)或 v(字符选择)

    • 命令模式 → 底行模式::(冒号,也就是Shift + ;)

    • 返回命令模式:任何模式下按 Esc

vim的配置🤨

        我们可以看到我们的vim是一个比较原生的状态,很多的功能没有,所以就需要进行配置~

Vim配置的核心目的是通过修改用户家目录下(不会影响别人)的.vimrc文件,实现以下目标:

  1. 个性化定制:调整Vim编辑器的行为(如缩进方式、搜索设置)、界面(如行号显示、颜色主题)和功能(如快捷键映射),以适应不同用户的编码习惯和需求。

  2. 功能扩展:通过.vimrc文件,您可以安装和管理插件(如文件浏览器、代码补全工具),从而显著增强Vim的功能,使其成为一个更加强大和高效的开发环境。

配置文件位置

  • 在Linux系统中,Vim的配置文件.vimrc通常位于用户的家目录下,例如:/home/zs/.vimrc

配置内容示例

  • 通过编辑.vimrc文件,您可以设置诸多选项,例如:
    • set number:显示行号,方便定位代码位置
    • syntax on:启用语法高亮,提升代码可读性
    • set autoindent:自动缩进,保持代码格式整洁
    • 安装插件(如NERDTree、vim-plug等),扩展文件管理或插件管理功能

        总结来说,Vim的配置是一个通过修改.vimrc文件来个性化定制和增强Vim编辑器功能的过程,它使得Vim能够更好地适应我们的编码风格和工作流程~大家可以根据需要进行配置~

补充:【!char】指令🤗

!char

!操作符与char命令的结合使用!char可重复执行历史最近以char开头的命令,实现灵活高效的命令行交互~


♥♥♥本篇博客内容结束,期待与各位优秀程序员交流,有什么问题请私信♥♥♥

♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥

✨✨✨✨✨✨个人主页✨✨✨✨✨✨


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

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

相关文章

基于迁移学习的培养基配方开发方法

本文为学习笔记&#xff0c;原文专利&#xff1a; 中国专利公布公告 然后输入 202110622279.7 概览 一、问题背景 传统培养基开发痛点&#xff1a; 数据依赖&#xff1a;需大量细胞实验&#xff08;1000配方&#xff09;训练专用模型 迁移性差&#xff1a;A细胞模型无法直接…

Web3.0与元宇宙:重构数字文明的技术范式与社会变革

一、技术融合&#xff1a;Web3.0与元宇宙的底层架构互补1.1 区块链与智能合约&#xff1a;构建信任基石去中心化信任机制&#xff1a;Web3.0的区块链技术为元宇宙提供去中心化信任框架&#xff0c;虚拟资产&#xff08;如土地、道具&#xff09;通过NFT&#xff08;非同质化代币…

Java: OracleHelper

/*** encoding: utf-8* 版权所有 2025 ©涂聚文有限公司 * 许可信息查看&#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎* 描述&#xff1a; https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html ojdbc11* Author : geovi…

OSPFv3-一二类LSA

文章目录OSPFv3 LSA类型Router LSANetwork LSA&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Datacom专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年07月12日20点01分 OSPFv3 LSA类型 Router LSA 不再包含地址信息&#xff0c;使能 OS…

HugeGraph 【图数据库】JAVA调用SDK

1.引入依赖<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>28.0-jre</version> </dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifac…

软考中级【网络工程师】第6版教材 第2章 数据通信基础(中)

考点分析&#xff1a;重要程度&#xff1a;⭐⭐⭐&#xff0c;本章可能是全书最难的章节&#xff0c;偏理论&#xff0c;公式多除了传输介质&#xff0c;其他知识点只考选择题&#xff0c;考试一般占3 ~ 5分高频考点&#xff1a;PCM、奈奎斯特定理、曼彻斯特编码&#xff1b;难…

单片机(STM32-中断)

一、中断基础知识 1.概念 中断&#xff08;Interrupt&#xff09;是一种特殊的事件处理机制。当CPU正在执行主程序时&#xff0c;如果出现了某些紧急或重要的事件&#xff08;如外设请求、定时器溢出等&#xff09;&#xff0c;可以暂时中止当前的程序&#xff0c;转而去处理…

gitlab-ci.yml

.gitlab-ci.yml 文件的位置 该文件应放置在 GitLab 项目的代码仓库的根目录 下&#xff0c;具体说明如下&#xff1a;存储库根目录 .gitlab-ci.yml 是 GitLab 持续集成&#xff08;CI&#xff09;的配置文件&#xff0c;需直接放在项目的代码仓库的根目录&#xff08;与 .git 目…

使用JS编写一个购物车界面

使用JS编写一个购物车界面 今天我们来剖析一个精心设计的家具商店购物车页面&#xff0c;这个页面不仅美观大方&#xff0c;还具备丰富的交互功能。让我们一步步拆解它的设计理念和技术实现&#xff01; 页面展示 页面整体结构 这个购物车页面采用了经典的电商布局模式&…

零信任安全架构:如何在云环境中重构网络边界?

一、云原生时代&#xff1a;传统防火墙为何轰然倒塌&#xff1f; 当业务碎片化散落在AWS、阿里云、私有IDC&#xff0c;当员工随手在咖啡厅WiFi连接生产数据库&#xff0c;“内网可信”的基石瞬间崩塌&#xff0c;传统防火墙彻底沦为马奇诺防线&#xff1a; 边界消亡&#xff1…

css实现烧香效果

效果&#xff1a;代码&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>动态香烛效果&…

硬件产品的技术资料管控是确保研发可追溯、生产可复制、质量可控制的核心环节。

硬件产品的技术资料管控是确保研发可追溯、生产可复制、质量可控制的核心环节。以下针对BOM单、PCB文件、程序代码、原理图四大核心要素&#xff0c;结合行业实践提出管控方向划分及优化策略&#xff1a;&#x1f4cb; 一、硬件BOM单的精细化管控方向BOM单是硬件生产的“配方表…

Uniswap V2/V3/V4简短说明

Uniswap 是以太坊上最知名的去中心化交易所&#xff08;DEX&#xff09;&#xff0c;它通过不同的版本&#xff08;V2、V3、V4&#xff09;不断改进&#xff0c;变得更高效、更灵活。以下是用通俗易懂的方式介绍它们之间的异同&#xff1a; Uniswap V2&#xff1a;基础版&#…

C++面向对象创建打印算术表达式树

C面向对象&#xff0c;实现算术表达式树的创建和打印的案例&#xff0c;来源于《C沉思录》第八章&#xff0c;涉及数据抽象、继承、多态&#xff08;动态绑定&#xff09;、句柄&#xff0c;其中句柄的使用是核心&#xff0c;关于句柄的较为简单的文章链接点击这里&#xff0c;…

力扣每日一题--2025.7.16

&#x1f4da; 力扣每日一题–2025.7.16 &#x1f4da; 3201. 找出有效子序列的最大长度 I&#xff08;中等&#xff09; 今天我们要解决的是力扣上的第 3201 题——找出有效子序列的最大长度 I。这道题虽然标记为中等难度&#xff0c;但只要掌握了正确的思路&#xff0c;就能…

SFT:大型语言模型专业化定制的核心技术体系——原理、创新与应用全景

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 以下基于权威期刊、会议论文及技术报告&#xff0c;对监督微调&#x…

若依前后端分离框架配置多数据库表

若依前后端分离框架配置多数据库表1、配置application.yml2、注释掉application-druid.yml中的数据库3、在DataSourceType 中添加新增的数据库来源4、配置DruidConfig文件4、1新增注入方法&#xff0c;在DataSourceType类添加数据源枚举4、2在DruidConfig类dataSource方法添加数…

29.安卓逆向2-frida hook技术-逆向os文件(二)IDA工具下载和使用(利用ai分析so代码)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取码&#xff1…

[析]Deep reinforcement learning for drone navigation using sensor data

Deep reinforcement learning for drone navigation using sensor data 基于传感器数据的无人机导航深度强化学习方法 评价&#xff1a;MDP无记忆性&#xff0c;使用LSTM补足缺点。PPO解决新旧策略差距大的问题。 对于环境中的障碍物&#xff0c;设置增量课程&#xff0c;障碍…

SpringBoot项目启动报:java: 找不到符号 符号: 变量 log 的解决办法

问题&#xff1a;使用IDEA创建SpringBoot项目&#xff0c;在项目中使用 Slf4j 注解引入log日志后&#xff0c;启动项目&#xff0c;报如下错误&#xff1a;原因&#xff1a;网上找了很多博文&#xff0c;说是lombook依赖没有引入&#xff0c;但是我的pom.xml中已经引入 lombook…