Linux学习:基础开发工具的使用(1)

目录

  • 1. Linux软件包管理器:yum工具
    • 1.1 yum是什么(软件商城)
    • 1.2 yum的使用
    • 1.3 yum的背景生态
  • 2. 项目开发与集成开发环境
  • 3. vim编辑器
    • 3.1 vim编辑器的常见模式与模式切换
    • 3.3 vim编辑器的使用
      • 3.3.1 命令模式下的常见命令:
      • 3.3.2 vim编辑器的相关配置问题

1. Linux软件包管理器:yum工具

1.1 yum是什么(软件商城)

  1. 在前面的学习中,我们使用yum install -y ...这条指令安装过一些操作系统没有自带的指令(可执行程序),可是,这条指令的安装操作究竟是怎么实现的呢,除此之外,它还能安装其他的资源吗?
  2. 接下来就让我们进行对这条简单指令背后知识的学习。
  1. Linux操作系统下安装软件的三种方式:
    <1> 下载软件的源代码,再对其进行编译,最后得到可执行程序(交叉编译)
    <2> 下载网络上已经整合好的对应版本的rpm包,然后进行安装
    <3> 通过操作系统自带的预装指令yum/apt,直接进行一条龙式的软件安装(搜索,下载,安装)
    注:两者方式操作起来较为复杂,且可能会下载安装到没有安全保障的资源,所以在初学时,我们不推荐这两种安装方式。
  1. CentOS下的yum预装指令是如何实现软件安装的:
    <1> 此条指令的意义为请求操作系统中一个名为yum的软件安装工具进行我们所指定软件的安装。
    <2> 这款名为yum的工具软件其实类似于windows操作系统,手机中自带的软件商城,唯一不同的是,Linux操作系统下的软件商城采用的也是命令行的操作方式。

1.2 yum的使用

  1. 在日常中,我们在使用电脑或手机中的软件商城进行软件的安装之外,会对所需要的软件进行搜索定位,或为浏览软件商城中的软件查找所需,在安装后可能还要进行软件的卸载。浏览,搜索卸载与安装,这四种方式搭配才能满足我们在软件安装时的需求,而这三个操作在yum中也有对应的命令行操作方式。
  1. 指令:yum list
    指令意义:查看所有软件列表
  1. 指令:yum list | grep [要搜索软件(lrzsz)]
    指令意义:搜索指定软件(软件罗列与行文本过滤搭配使用达到搜索的目的)
  1. 指令:yum remove [软件]
    指令意义:进行软件卸载
  1. 补充:
    <1> 在使用上述搜索,安装,卸载等指令时,可能需要管理员权限(sudo提权)
    <2> 在使用安装指令时,在安装过程中会存在一些问答,给指令自带的-y参数选项,会同意默认yes回复。
  1. 软件信息的浏览:

在这里插入图片描述

1.3 yum的背景生态

  1. 经过上面两部分知识的学习我们已经对yum这款工具软件有了初步的了解,接下来,让我们对它背后知识较深入学习。首先,让我们来看下面几个问题:
    <1> 我们下载使用的软件是谁进行开发,维护与提供的
    <2> 软件的提供方为什么免费提供这些软件
    <3> 我们需要下载的软件资源存放在哪里
    <4> 我们搜索软件时,是怎么搜索到软件的,搜索方式是什么
  1. 让我们带着这些问题,先来了解一下不同Linux操作系统的社区与生态:
    <1> 现在的市面上有各种各样免费开发源的操作系统Ubuntu,CentOS,RedHat等等,它们的内核都是Linux,可是,又因为什么使得它们有了区别做了划分。
    <2> 当我们需要一个操作系统时,Linux类的各种开源又功能强大的操作系统是我们的首选与优选,可是,Linux操作系统有着众多不同的品牌,我们应该如何选择呢。在选择之前,我们应该去了解哪些信息
    <3> 首要的,应该了解这些操作系统间的不同,经过了解得知,这些操作系统的功能偏向与使用场景不同,它们的基座都是Linux,只是上层的资源存在不同,CentOS的常用于企业级开发,Android用于手机移动端的开发,Ubuntu的用户大多数都是学生。
    <4> 其次,我们如何判断一个操作系统是否足够稳定,足够优秀,我们去进行调研比对,应该采用哪些标准,为什么使用这些指标进行调研。
    <5> Linux系统的调研指标:
    版本:软件项目与应用对操作系统的版本有要求
    使用人数:基数庞大的使用人群,会充分快速的暴露操作系统中的问题并进行解决
    周边软件:周边软件的数量是否足够多,质量是否足够高,有没有能够帮助我们解决问题的软件工具
    配套资源:是否有齐备配套的文档,维护人员与软件开发人员是否专业,这标识着这个操作系统是否足够成熟,是否有良好稳定的发展
    <6> Linux操作系统的社区:
    社区:因为这个操作系统,聚集起来的开发组织,使用人员组成的集体。
    <7> Linux操作系统的生态:以Linux操作系统为环境背景下,整个相关链条上事物的运作与发展。

在这里插入图片描述

  1. 经过上面的了解后,我们大概了解了Linux操作系统的社区与生态。那么,再来回答前面的问题就变得不再困难。
    <1> Linux操作系统上软件的开发,由负责操作系统开发与维护的人员和有能力有意愿的用户共同完成。
    <2> 之所以免费提供这些软件,是因为开发与维护的组织为开源组织,并且软件的开源也可以更好的促进操作系统的良性发展。
    <3> 我们下载的软件资源,存在在专门的充当软件仓库的远端服务器,由开发与维护操作系统的组织进行管理。
    <4> 通过访问远端软件仓库或者网上搜寻的方式来获得软件资源,yum工具在配置文件中有存放远端仓库的地址与专门的网址。
  1. 补充:
    <1> yum存放下载地址的配置文件路径:/etc/yum.repos.d/
    <2> yum源:yum从哪里获得软件资源,即软件资源的来源
    <3> 更新yum源:即更新存放下载地址的配置文件,更换为拥有想要下载地址的配置文件
  1. 更新yum源的指令操作:
    <1> 指令1:wget [存放路径] [下载地址]
    <2> 指令2:wget -O [存放路径 + 重命名的文件名] [下载地址](将下载后的配置文件重命名)
    <3> 指令3:make clean(清空之前yum源留下的缓存)
    <4> 指令4:makecache(缓存现在的yum源)
    <5> 阿里云yum源下载地址:http://mirrors.aliyun.com/repo/Centos-7.repo(Centos-7操作系统)
    <6> 镜像文件:从国外网站获取的操作系统相关的开源源代码
  1. 基础软件源与扩展软件源
    <1> Linux操作系统中,会将系统中常用的软件(会进行动态的添加与删除管理)集中放置到一个地方,方便管理与调用。我把这个用来存放这些软件资源的地方称为基础软件源。
    <2> 我们可以通过指令,安装一个额外的软件源用来集中存放管理不常用的软件,这种软件源被称为,扩展软件源。
    指令:yum install -y epel-release

2. 项目开发与集成开发环境

  1. 我们平常想要顺利的开发项目,进行代码的编写运行,需要经过编写,编译,调试等步骤去一步步实现。
  2. 这一过程中,每个步骤所需要的开发工具都是不同的。在C语言的学习我们并没有对这些开发工具进行详细了解,我们通过直接使用集成开发环境方式进行项目的开发。
  3. 集成开发环境为我们带来便利的同时,它的高度集成也使得我们对程序创建到生成的过程比较陌生,不太利用这方面知识的学习。
  4. 接下来,在Linux操作系统中项目开发我们将不再使用集成开发环境的方式来进行,而会通过不同的开发工具对整个个开发过程进行相对深入与细致的学习。

3. vim编辑器

  1. 程序源代码的编写工具(vim编辑器)

3.1 vim编辑器的常见模式与模式切换

  1. vim编辑器应对不同的编辑需要拥有不同的模式,我们经常会使用的模式有下列几种:
    <1> 命令模式(命令模式所有输入都会被当做命令)
    <2> 插入模式
    <3> 底行模式
    <4> 替换模式
  1. 指令:vim [文件]
    指令意义:使用vim编辑器打开文件,当当前目录中没有此文件,创建此文件并打开
  1. vim编辑器的开启默认模式与模式间的切换:

在这里插入图片描述

  1. 命令模式切换插入模式,不同命令的效果:
    <1> i切换进插入模式,开始位置为当前光标位置
    <2> a切换进插入模式,开始位置为当前光标位置的后一个字符
    <3> o切换进入插入模式,在当前光标所在行的下面创建新的一行,开始位置为新建行的行首
  1. <1>在我们的使用中,使用vim编辑器打开文件后,可能会发生异常退出的情况,此时我们还未来得及对更新的文件内容进行保存。
    <2> 操作系统为了防止内容丢失,会在文件所在目录生成一份保存异常退出时内容的隐藏临时文件(.[文件名].swap)。
    在这里插入图片描述
    <3>当我们进入再次进入这个文件时,会跳出以下界面。我们可以通过底行提示,使用R + D,恢复内容,删除临时文件,再次进入文件就可以正常登录。
    在这里插入图片描述

3.3 vim编辑器的使用

3.3.1 命令模式下的常见命令:

  1. 光标移动命令:(锚点)
    <1> shift + 4($)(光标移动到所在行的最右侧/后侧)
    <2>shift + 6(^)(光标移动到所在行的最左侧/前侧)
    <3>shift + g(G)(光标移动到文件内容的结尾处)
    <4> gg(光标移动到文件的开始位置)
    <5> n + shift + g(光标移动到确定的第n行)
    <6> H J K L(光标向左,下(jump),上(king),右移动,早期键盘没有专门的上下左右键)
  1. 对文件内容的操作命令:
    <1> yy(复制光标当前所在行)
    <2> n + yy(复制n行的内容)
    <3> p(在光标位置粘贴复制内容)
    <4> n + p(将复制内容粘贴n次)
    <5> u(撤销上一步的操作(undo))
    <6> ctrl + R(撤销,撤销操作)
    <7> dd(删除当前行/剪切当前行,配合粘贴达到剪切的效果)
    <8> n + dd(删除/剪切n行)
    <9> shift + (~)(大写小写互相切换)
    <10> r(替换光标所在字符)
    <11> n + r(替换多个字符)
    <12> x(删除光标所在字符)
    <13> n + x(向后删除n个字符)
    <14> n + shift + x(向前删除n个字符)
    <15> w(以单词为步长向后移动)
    <16> b(以单词为步长向前移动)

补充:shift + r(R)(切换到替换模式,此模式下输入均视为替换操作)

  1. 补充命令:
    <1> 当文件处于特殊状态(被查看等)或我们没有权限进行对编辑内容的保存退出
    w!(强制保存),q!(强制退出)(管理员,sudo提权)
    <2> 底行模式下:! + shell命令(command)(在不退出文件编辑的情况下,执行shell命令)
    <3> shift + /(?),输入要搜索的函数名(在整个文件范围,搜索同名函数)
    <4> 底行模式下:vs + 文件名(可在不关闭当前文件的情况下,分屏打开指定文件)
    <5> ctrl + ww(光标在两个两个文件中跳转)
    <6> 底行模式下,set nusetnonu(显示行号,取消行号显示)
    <7> shell命令:vim + 文件 + n(打开文件并跳转到文件的第n行)
    <8> 命令模式下:shift + zz(ZZ)(退出vim编辑器,此种方式不推荐使用)

补充:打开文件时,光标会在上一次关闭文件时光标停留位置

3.3.2 vim编辑器的相关配置问题

  1. 图示模式与批量化注释/去注释:
    <1> ctrl + v(进入图示模式)
    <2>hjkl(选择区域)
    <3> shift + i(进入插入模式)/ d(将选择区域去掉)
    <4> //(向选择区域添加注释)
    <5> Esc(退出)
  1. 进行vim编辑器配置的目的
    vim编辑器的初始功能模式,对于编写代码开并不方便,但我们可以通过调整vim编辑器的配置,来为我们的编辑添加一些辅助功能设置。(自动补全,语句补全,语法报错,自动缩进等)
  1. vim编辑器的配置方法:
    <1> vim编辑器的配置并不是操作系统全用户共享的
    <2> 首先,进入家目录使用ll -a指令查看是否存在.vimrc文件,若不存在则创建此文件
    <3> 接下来,我们对vim编辑器的配置操作都是在这个文件中执行的,我们不断向这个文件添加我们需要的配置命令来满足我们的需求(set nu设置行号,"将配置文件中的内容注释)
  1. 安装应用已经配置成熟的配置文件:
    <1>执行指令:curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
    <2> 按步骤进行安装
    <3> 安装完成后,执行指令:source ~/.bashrc
  1. sudo权限的白名单配置
    <1> 打开系统文件:/etc/sudoers(浏览编辑保存,需要管理员权限)
    <2> 在文件100行左右处,添加内容用户名 ALL=(ALL) ALL
    <3> 强制保存:w!,强制退出:q!

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

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

相关文章

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的石头剪刀布手势识别系统详解(深度学习模型+UI界面代码+训练数据集)

摘要&#xff1a;本篇博客深入探讨了使用深度学习技术开发石头剪刀布手势识别系统的过程&#xff0c;并分享了完整代码。该系统利用先进的YOLOv8、YOLOv7、YOLOv6、YOLOv5算法&#xff0c;并对这几个版本进行性能对比&#xff0c;如mAP、F1 Score等关键指标。文章详细阐述了YOL…

vscode使用npm命令无反应,而终端可以的解决办法

如若你遇到这种情况 使用命令 get-command npm 去下面这个路径把它删掉就可以了

HarmonyOS的功能及场景应用

一、基本介绍 鸿蒙HarmonyOS主要应用的设备包括智慧屏、平板、手表、智能音箱、IoT设备等。具体来说&#xff0c;鸿蒙系统是一款面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统&#xff0c;能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备…

《量子计算:下一个大风口,还是一个热炒概念?》

引言 量子计算,作为一项颠覆性的技术,一直以来备受关注。它被认为是未来计算领域的一次革命,可能改变我们对计算能力和数据处理的理解。然而,随着技术的不断进步和商业应用的探索,人们开始思考,量子计算到底是一个即将到来的大风口,还是一个被过度炒作的概念? 量子计…

工业物联网平台在水务环保、暖通制冷、电力能源等行业的应用

随着科技的不断发展&#xff0c;工业物联网平台作为连接物理世界与数字世界的桥梁&#xff0c;正逐渐成为推动各行业智能化转型的关键力量。在水务环保、暖通制冷、电力能源等行业&#xff0c;工业物联网平台的应用尤为广泛&#xff0c;对于提升运营效率、降低能耗、优化管理等…

16. C++标准库

C标准库兼容C语言标准函数库&#xff0c;可以在C标准库中直接使用C语言标准函数库文件&#xff0c;同时C标准库增加了自己的源代码文件&#xff0c;新增文件使用C编写&#xff0c;多数代码放在std命名空间中&#xff0c;所以连接C标准库文件后还需要 using namespace std;。 【…

【RabbitMQ】RabbitMQ的交换机

交换机类型 在上文中&#xff0c;都没有交换机&#xff0c;生产者直接发送消息到队列。而一旦引入交换机&#xff0c;消息发送的模式会有很大变化&#xff1a;可以看到&#xff0c;在订阅模型中&#xff0c;多了一个exchange角色&#xff0c;而且过程略有变化&#xff1a; Pub…

【wps】wps与office办公函数储备使用(结合了使用案例 持续更新)

【wps】wps与office办公函数储备使用(结合了使用案例 持续更新) 1、TODAY函数 返回当前电脑系统显示的日期 TODAY函数&#xff1a;表示返回当前电脑系统显示的日期。 公式用法&#xff1a;TODAY() 2、NOW函数 返回当前电脑系统显示的日期和时间 NOW函数&#xff1a;表示返…

Day29:安全开发-JS应用DOM树加密编码库断点调试逆向分析元素属性操作

目录 JS原生开发-DOM树-用户交互 JS导入库开发-编码加密-逆向调试 思维导图 JS知识点&#xff1a; 功能&#xff1a;登录验证&#xff0c;文件操作&#xff0c;SQL操作&#xff0c;云应用接入&#xff0c;框架开发&#xff0c;打包器使用等 技术&#xff1a;原生开发&#x…

GaussDB(DWS)运维利刃:TopSQL工具解析

在生产环境中&#xff0c;难免会面临查询语句出现异常中断、阻塞时间长等突发问题&#xff0c;如果没能及时记录信息&#xff0c;事后就需要投入更多的人力及时间成本进行问题的定位和解决&#xff0c;有时还无法定位到错误出现的地方。在本期《GaussDB(DWS)运维利刃&#xff1…

在 Python 中从键盘读取用户输入

文章目录 如何在 Python 中从键盘读取用户输入input 函数使用input读取键盘输入使用input读取特定类型的数据处理错误从用户输入中读取多个值 getpass 模块使用 PyInputPlus 自动执行用户输入评估总结 如何在 Python 中从键盘读取用户输入 原文《How to Read User Input From t…

小家电显示驱动芯片SM1616特点与相关型号推荐

电饭煲、电磁炉、空调和机顶盒等等小家电通常需要使用显示驱动芯片来控制和驱动显示屏。这些显示驱动芯片的主要功能是将处理器的信号转换成显示屏能够理解的信号&#xff0c;从而显示出相应的文字和图像。 具体来说&#xff0c;电饭煲、电磁炉、空调等家等小家电通常会有一个或…

四桥臂三相逆变器动态电压恢复器(DVR)MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 简介 四桥臂三相逆变器 电路 的一般形式如图 1&#xff0c;为 便于分析 &#xff0c;将其等效成图所示的电路 。以直流母线电压Ud的 1&#xff0f;2处为参考点 &#xff0c;逆变器三相和零线相 输 出可等效成…

深度学习:如何面对隐私和安全方面的挑战

深度学习技术的广泛应用推动了人工智能的快速发展&#xff0c;但同时也引发了关于隐私和安全的深层次担忧。如何在保护用户隐私的同时实现高效的模型训练和推理&#xff0c;是深度学习领域亟待解决的问题。差分隐私、联邦学习等技术的出现&#xff0c;为这一挑战提供了可能的解…

pytorch的梯度图与autograd.grad和二阶求导

前向与反向 这里我们从 一次计算 开始比如 zf(x,y) 讨论若我们把任意对于tensor的计算都看为函数&#xff08;如将 a*b&#xff08;数值&#xff09; 看为 mul(a,b)&#xff09;&#xff0c;那么都可以将其看为2个过程&#xff1a;forward-前向&#xff0c;backward-反向在pyto…

3.7号freeRtoS

1. 串口通信 配置串口为异步通信 设置波特率&#xff0c;数据位&#xff0c;校验位&#xff0c;停止位&#xff0c;数据的方向 同步通信 在同步通信中&#xff0c;数据的传输是在发送端和接收端之间通过一个共享的时钟信号进行同步的。这意味着发送端和接收端的时钟需要保持…

进电子厂了,感触颇多...

作者&#xff1a;三哥 个人网站&#xff1a;https://j3code.cn 本文已收录到语雀&#xff1a;https://www.yuque.com/j3code/me-public-note/lpgzm6y2nv9iw8ec 是的&#xff0c;真进电子厂了&#xff0c;但主人公不是我。 虽然我不是主人公&#xff0c;但是我经历的过程是和主…

Qt 实现诈金花的牌面值分析工具

诈金花是很多男人最爱的卡牌游戏 , 每当你拿到三张牌的时候, 生活重新充满了期待和鸟语花香. 那么我们如果判断手中的牌在所有可能出现的牌中占据的百分比位置呢. 这是最终效果: 这是更多的结果: 在此做些简单的说明: 炸弹(有些地方叫豹子) > 同花顺 > 同花 > 顺…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的常见车型识别系统(Python+PySide6界面+训练代码)

摘要&#xff1a;本文深入探讨了如何应用深度学习技术开发一个先进的常见车型识别系统。该系统核心采用最新的YOLOv8算法&#xff0c;并与早期的YOLOv7、YOLOv6、YOLOv5等版本进行性能比较&#xff0c;主要评估指标包括mAP和F1 Score等。详细解析了YOLOv8的工作机制&#xff0c…

Qt/QML编程之路:openglwidget和倒车影像的切换(43)

关于如何实现一个基于OpenGL的3d 图形,这个有很多专门的介绍,我在开发中遇到了这么一个问题: 如何实现一个倒车影像的video显示与一个3D物体显示的切换,因为开窗在同样的一个位置,如果车子倒车启动,则需要将原本显示3D的地方切换为视频图像的显示。 class testOpenGl : …