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.mzph.cn/news/741620.shtml

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

相关文章

【rk3368 android6.0 恢复出厂设置功能】

rk3368 android6.0 恢复出厂设置功能 恢复出厂设置三种方法一&#xff0c;设置--进入恢复出厂设置页面二&#xff0c;发送广播形式三&#xff0c;命令形式总结 郑重声明:本人原创博文&#xff0c;都是实战&#xff0c;均经过实际项目验证出货的 转载请标明出处:攻城狮2015 恢复…

主机、虚拟机和开发板三者互相之间能ping通的配置参数

主机网络配置 开发板网络配置 虚拟机网络配置

OKHttpRetrofit

完成一个get请求 1.导入依赖 implementation("com.squareup.okhttp3:okhttp:3.14.")2.开启viewBinding android.buildFeatures.viewBinding true 3.加网络权限 和 http明文请求允许配置文件 <?xml version"1.0" encoding"utf-8"?> &l…

在受污染的二叉树中查找元素(Lc1261)——DFS+哈希表

给出一个满足下述规则的二叉树&#xff1a; root.val 0如果 treeNode.val x 且 treeNode.left ! null&#xff0c;那么 treeNode.left.val 2 * x 1如果 treeNode.val x 且 treeNode.right ! null&#xff0c;那么 treeNode.right.val 2 * x 2 现在这个二叉树受到「污染…

数据结构:详解【顺序表】的实现

1. 顺序表的定义 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。动态顺序表与数组的本质区别是——根据需要动态的开辟空间大小。 2. 顺序表的功能 动态顺序表的功能一般有如下几个&#xff1a; 初始化顺序表打印顺序…

腾讯云轻量服务器地域怎么选择?上海/北京/广州哪个合适?

腾讯云轻量应用服务器地域如何选择&#xff1f;地域就近选择&#xff0c;北方选北京地域、南方选广州地域&#xff0c;华东地区选上海地域。广州上海北京地域有什么区别&#xff1f;哪个好&#xff1f;区别就是城市地理位置不同&#xff0c;其他的差不多&#xff0c;不区分好坏…

【C++教程从0到1入门编程】第九篇:STL中Vector类

一、vector的介绍 1.vector的介绍 vector是表示可变大小数组的序列容器。 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&…

G6.antv自定义箭头 懒加载数据 箭头丢失

懒加载数据会导致箭头消失&#xff0c;只能自定义箭头 层次图&#xff1a;dagre 折线&#xff1a;polyline 设置endArrow&#xff1a;true 接口懒加载数据&#xff0c;执行 this.graph.read(this.graphData); this.graph.zoom(0.6);箭头消失&#xff0c;需自定义箭头 空心箭头…

香港理工大学主办!2024年第八届电力能源系统与应用国际会议(ICoPESA 2024)即将召开!

2024年第八届电力能源系统与应用国际会议&#xff08;ICoPESA 2024&#xff09; 2024年6月24日-26日 中国香港 ICoPESA 2024-Hong Kong (icpesa.org)https://icpesa.org/index.html 会议组织单位 会议出版及检索&#xff1a; 会议录用并注册的论文将由IEEE出版&#xff0c;…

[BJDCTF2020]Cookie is so stable

hint提示查看cookies flag.php页面我们先随便输入一个名字 输入后我们重新进一次flag.php&#xff0c;发现cookie里存储了刚刚登陆时输入的用户名&#xff0c;直接猜是ssti 尝试后根据ssti特征判断是twig模板 {{_self.env.registerUndefinedFilterCallback("exec")…

在 Rust 中使用 Serde 处理json

在 Rust 中使用 Serde 处理json 在本文中&#xff0c;我们将讨论 Serde、如何在 Rust 应用程序中使用它以及一些更高级的提示和技巧。 什么是serde&#xff1f; Rust中的serde crate用于高效地序列化和反序列化多种格式的数据。它通过提供两个可以使用的traits来实现这一点&a…

C++作业day2

封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() #include <iostre…

Linux 基本命令

文章目录 1.echo2.cd3.find4.mkdir5.cp6.rm7.wc8.tar9.tail10.vim11.grep12.sed13 touch14 ls15 快捷键16 ln17 mv18 useradd19 usermod20 su 每天一个Linux命令 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 1.echo 中文 (Chinese): “回声” 或 “输…

JMeter使用记录

文章目录 概述从0创建一个测试场景线程组配置元件CSV Data Set ConfigHTTP信息头管理器HTTP Cookie管理器HTTP请求默认值 逻辑控制器简单控制器IF控制器循环控制器while控制器 取样器HTTP取样 前置/后置处理器BeanShell处理器JSR223处理器 监听器查看结果树聚合报告汇总报告 概…

淘宝客必看:微信公众号如何快速接入抖音本地团购并提高CPS收益

抖音已经成为社交媒体新的流量高地&#xff0c;抖音团购完全复刻了美团的模式&#xff0c;外卖、到店、吃喝玩乐全覆盖。很多淘宝客一直在寻找通过微信公众号实现营销变现的有效途径&#xff1f;是否对于如何将抖音团购转变为自己的佣金收入感到困惑&#xff1f;微信公众号接入…

推荐一个Star74.5k的电商系统项目

最近不少兄弟正在面试&#xff0c;过来咨询 V 哥关于项目经验的问题&#xff0c;记得上周给大家分享了一篇《教你如何回答技术面试问题才完美》的文章&#xff0c;其中文章中最核心的问题&#xff0c;就是在简历中如何体现你的项目经历&#xff0c;我再强调一下&#xff0c;如何…

Linux 网络:调试、追踪、调优

文章目录 1. 前言2. 网络状态观察2.1 硬件&#xff1a;网络硬件 调试观察2.1.1 网络 PHY 芯片 调试观察2.1.1.1 观察方法2.1.1.2 源码实现2.1.1.2.1 用户空间部分2.1.1.2.2 内核空间部分 2.1.2 网卡调试观察2.1.2.1 网卡性能评估2.1.2.1.1 网卡性能评估方法2.1.2.1.2 代码实现 …

Sora平替?5款AI视频生成工具,真的好用吗?

最近Sora真的太火了&#xff0c;这不&#xff0c;人家接口都还没公开&#xff0c;各种Sora培训课就已经上线了&#xff0c;就离谱&#xff01; 不过呀&#xff0c;话说回来&#xff0c;AI视频生成的确是未来的趋势&#xff0c;如果AI视频真的能达到Sora演示的效果&#xff0c;…

web项目抢购模块测试

web项目抢购模块测试 抢购模块(先测后台,再测前台)流程抢购用例编写测试点--后台抢购用例编写测试点--前台用例设计 面试题1: 当你发现研发实现的结果与需求不一致时怎么办? 需求评审的时候:需要确认所有输入类型的校验是针对单独的输入框做的还是在最终提交时校验 抢购模块 需…