Linux第三讲:环境基础开发工具使用

Linux第三讲:环境基础开发工具使用

  • 1.Linux软件包管理器yum
    • 1.1什么是软件包管理器
    • 1.2操作系统生态问题
    • 1.3什么是yum源
  • 2.vim详解
    • 2.1什么是vim
    • 2.2vim的多模式讲解
      • 2.2.1命令模式的诸多指令
        • 2.2.1.1gg和n+shift+g
        • 2.2.1.2shift+$和shift+^
        • 2.2.1.3上、下、左、右
        • 2.2.1.4w和b
        • 2.2.1.5复制yy和粘贴p和剪切dd
        • 2.2.1.6x -- 命令模式的删除
        • 2.2.1.7撤销u和反撤销ctrl + r
        • 2.2.1.8shift+~
        • 2.2.1.9n+r:小范围的文本替换
        • 2.2.1.10shift+r:进入替换模式
        • 2.2.1.11aio进入插入模式的区别
        • 2.2.1.12保存和退出
      • 2.2.2底行模式诸多指令
        • 2.2.2.1set nu
        • 2.2.2.2/XXX -- 搜索XXX
        • 2.2.2.3!command
        • 2.2.2.4vs+other:分屏操作
      • 2.2.3视图模式指令解析
        • 2.2.3.1批量化注释和去注释
        • 2.2.3.2将所有的printf修改为print
        • 2.2.3.3vim code.c +15
        • 2.2.3.4!g和!l
    • 2.3vim的配置
  • 3.复习程序翻译
    • 3.1理解条件编译
  • 4. 补充 -- sudo问题
  • 5.理论知识科普
    • 5.1为什么要编译和汇编,以及编译器自举是什么
    • 5.2动静态库和动静态链接 -- 操作部分
    • 5.3动静态库和动静态链接 -- 理论部分
  • 6.自动化构建 - make/Makefile
  • 7.Linux第一个程序:进度条的实现
    • 7.1回车和换行
    • 7.2行缓冲区
    • 7.3进度条的一般实现
    • 7.4进度条版本1
    • 7.5最终进度条版本

1.Linux软件包管理器yum

1.1什么是软件包管理器

在这里插入图片描述

1.2操作系统生态问题

我们要完全理解yum问题,必须要了解操作系统的生态问题:

在这里插入图片描述
最后我们看一下yum的操作即可:
在这里插入图片描述

1.3什么是yum源

上面我们提到,yum是一个用于安装、更新、删除和管理软件包的命令行工具,yum源是指存储软件包及其依赖关系的服务器位置或者本地目录,yum通过访问这些源来管理软件包

在这里插入图片描述

2.vim详解

2.1什么是vim

在这里插入图片描述

2.2vim的多模式讲解

在这里插入图片描述

所以,我们要先进行命令模式的学习:

2.2.1命令模式的诸多指令

我们先进入底行模式,输入set nu,将行号显式出来

2.2.1.1gg和n+shift+g

在这里插入图片描述

2.2.1.2shift+$和shift+^

在这里插入图片描述

2.2.1.3上、下、左、右

在这里插入图片描述
但是,我们会有疑惑:有上下左右键,为什么要使用这些字符进行上下左右呢?
在这里插入图片描述
上面是一个老式的电脑,可以看到,这个电脑没有上下左右键,所以就设计成这样了,秉持着向上兼容的问题,所以上下左右也保存下来了,但是,有的并不支持上下左右进行翻阅,只支持hjkl进行翻阅!

2.2.1.4w和b

在这里插入图片描述

2.2.1.5复制yy和粘贴p和剪切dd

在这里插入图片描述
剪切可以进行粘贴,也可以进行删除!

2.2.1.6x – 命令模式的删除

在这里插入图片描述

2.2.1.7撤销u和反撤销ctrl + r

这个很好理解,就是ctrl+z和ctrl+y

2.2.1.8shift+~

在这里插入图片描述
按一次,转换一个字符,一直按着,就是转换一行
在这里插入图片描述

2.2.1.9n+r:小范围的文本替换

在这里插入图片描述

2.2.1.10shift+r:进入替换模式

假如我们有一行都写错了,那么我们可以进入替换模式进行更改:
在这里插入图片描述
在这里插入图片描述

2.2.1.11aio进入插入模式的区别

a:进入插入模式,并将光标向后移动一位:
在这里插入图片描述
i:进入插入模式
o:进入插入模式,并新起一行:
在这里插入图片描述

2.2.1.12保存和退出

w为保存,q为退出,进入底行模式之后,输入wq,表示保存并退出,shift+zz也表示保存并退出
wq!表示强制保存并退出,之后如果对于一些敏感文件,就需要进行强制保存或者修改

2.2.2底行模式诸多指令

2.2.2.1set nu

set nu为设置行号
set nonu为取消设置行号

2.2.2.2/XXX – 搜索XXX

在这里插入图片描述

在这里插入图片描述

2.2.2.3!command

!后边跟指令,可以直接在底行模式下进行命令的执行:
在这里插入图片描述

2.2.2.4vs+other:分屏操作

在这里插入图片描述

2.2.3视图模式指令解析

视图模式是我们的最后一个模式了!:

2.2.3.1批量化注释和去注释

批量化注释:
在这里插入图片描述
将所有代码全部注释:
在这里插入图片描述

批量化去注释:
在这里插入图片描述
通过上面,可以进行拓展:批量化去除或替换文本,批量化加;等操作

2.2.3.2将所有的printf修改为print

在这里插入图片描述

2.2.3.3vim code.c +15

在这里插入图片描述

2.2.3.4!g和!l

在这里插入图片描述
感叹号加上命令首元素,可以直接执行最近的命令

2.3vim的配置

在vim上进行代码的编写时比较麻烦的,因为它连一个缩进都没有,所以我们可以对vim进行一个基本的配置:

在这里插入图片描述
而对于test配置的vim,因为是在自己的家目录中配置的文件,所以对于其他人,是看不到自己的配置的,所以对于vim的配置是自己配置自己的!
我们自己配置一个:
在这里插入图片描述

3.复习程序翻译

code.c中的内容为:
在这里插入图片描述
在这里插入图片描述

3.1理解条件编译

我们知道条件编译,但是条件编译有什么用呢?:
我们都知道:软件有免费版、校园版、付费版、社区版等等分类,这些不同版本的软件并不是每一个版本都有一份单独的代码,而它们是一份代码!而这里面使用的其实就是条件编译!

4. 补充 – sudo问题

在这里插入图片描述
当我们普通用户进行sudo时,不是信任用户,我们现在来改成信任用户:
在这里插入图片描述

5.理论知识科普

5.1为什么要编译和汇编,以及编译器自举是什么

在这里插入图片描述

5.2动静态库和动静态链接 – 操作部分

在这里插入图片描述
对于上面,我们只需要知道:gcc默认形成的可执行程序是动态链接的,而要强制静态链接的方式为:gcc-static,而静态链接与动态链接的最大不同在目前看来是文件的大小不同

5.3动静态库和动静态链接 – 理论部分

在这里插入图片描述

6.自动化构建 - make/Makefile

在这里插入图片描述
有了上面的基础知识之后,我们下面要做的就是实现更加有通用型的makefile:
在这里插入图片描述

7.Linux第一个程序:进度条的实现

7.1回车和换行

我们的回车和换行其实是两个不同的概念,\r表示回车,\n表示的是换行,回车只是将光标移动到这一行最开始的位置,而换行是将光标移动到下一行的位置,只是垂直位置移动,而水平位置不变,我们现在使用的\n其实是将换行和回车进行综合了!
在这里插入图片描述

7.2行缓冲区

在这里插入图片描述

7.3进度条的一般实现

我们想要实现的进度条为:
在这里插入图片描述
而该最一般的进度条实现起来还是非常简单的:
在这里插入图片描述

7.4进度条版本1

上面的进度条显然不太行,所以我们要再完善一个进度条:

在这里插入图片描述

7.5最终进度条版本

上面的进度条显然不足以应对我们真实的情况,因为上面并没有网速的变化、真实情况下的下载问题,我们最后进行优化:

在这里插入图片描述
我们真实的下载网速是可能会变的,我们进行测试:
在这里插入图片描述
最后将代码看一下就行了:
在这里插入图片描述

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

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

相关文章

数据库管理-第256期 Oracle DB 23.6新特性一览(20241031)

数据库管理256期 2024-10-31 数据库管理-第256期 Oracle DB 23.6新特性一览(20241031)1 AI向量搜索:新的向量距离度量2 混合向量索引3 分区:本地邻近分区向量索引4 持久邻近图向量索引5 稀疏向量6 邻居图向量索引的事务支持7 特征…

智能诊断系统:AI可以辅助临床诊断,提高疾病诊断的准确性和效率

​ 大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI工具集1:大厂AI工具【共2…

GCC编译器的`-Wall`、`-Wextra`和`-pedantic`选项解读

gcc是广泛使用的开源编译器,-Wall、-Wextra和-pedantic是gcc中用于控制警告信息的选项,以下是详细介绍: -Wall(启用大部分警告) 功能:-Wall 选项用于启用一系列常用的警告信息,这些警告能帮助…

[RocketMQ 5.3.1] Win11 + Docker Desktop 本地部署全流程 + 踩坑记录

时间比较仓促,部署Linux的过程我就简写啦。 0. 我的系统版本(供参考) Windows 11 专业版 24H2, Build 26100.2161 Experience: Windows Feature Experience Pack 1000.26100.32.0 JDK: OpenJDK Amazon Corretto 21.0.4.7.1 1. 在WSL2上安…

基于SpringBoot的植物园管理小程序【附源码】

基于SpringBoot的植物园管理小程序 效果如下: 系统登录页面 管理员主页面 商品订单管理页面 植物园信息管理页面 小程序主页面 小程序登录页面 植物信息查询推荐页面 研究背景 随着互联网技术的快速发展和移动设备的普及,线上管理已经成为各行各业提高…

qt QDragEnterEvent详解

1、概述 QDragEnterEvent是Qt框架中用于处理拖放进入事件的一个类。当用户将一个拖拽对象(如文件、文本或其他数据)拖动到支持拖放操作的窗口部件(widget)上时,系统会触发QDragEnterEvent事件。这个类允许开发者在拖拽…

《C#语法一篇通》,有20万字,需8MB字节,宜48小时阅读,没准会继续完善

本文摘录了C#语法的主要内容,接近20万字。 所有鸡汤的味道都等于马尿! 如果你相信任何所谓的鸡汤文章,智商堪忧。 计算机语言没有”好不好“之说,骗子才会告诉你哪个语言好,学好任何一本基础语言(C&#…

帆软报表新增一行数据后保存,删除选中数据

表格数据显示 1、建立数据库连接 2、建立查询语句,把需要显示的字段对应在界面上 3,关于自增序号如何设置,双击序号单元格,插入公式 4、如果有外键的,要进行下拉显示时,设置形态,显示中文保存…

MySQL-如果你在添加外键时忘加约束名,如何找到系统默认的约束名

问题 在你添加约束的时候,一般都会为其取名以方便后期的修改,但是如果你忘记了呢,如何找到系统默认的约束名 解决方法 -- 查找约束名 SELECTCONSTRAINT_NAME FROMINFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERETABLE_NAME emp ANDREFERENCED_T…

【MongoDB】MongoDB的聚合(Aggregate、Map Reduce)与管道(Pipline) 及索引详解(附详细案例)

文章目录 MongoDB的聚合操作(Aggregate)MongoDB的管道(Pipline操作)MongoDB的聚合(Map Reduce)MongoDB的索引 更多相关内容可查看 MongoDB的聚合操作(Aggregate) 简单理解&#xff…

【dvwa靶场:XSS系列】XSS (DOM) 低-中-高级别,通关啦

一、低级low 拼接的url样式&#xff1a;​​​​​​​ http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default 拼接的新内容 <script>alert("假客套")</script> 二、中级middle 拼接的url样式&#xff1a;​​​​​​​ http://127.0.0.1/dvwa/vuln…

Android13 系统/用户证书安装相关分析总结(二) 如何增加一个安装系统证书的接口

一、前言 接着上回说&#xff0c;最初是为了写一个SDK的接口&#xff0c;需求大致是增加证书安装卸载的接口&#xff08;系统、用户&#xff09;。于是了解了一下证书相关的处理逻辑&#xff0c;在了解了功能和流程之后&#xff0c;发现settings中支持安装的证书&#xff0c;只…

React 组件生命周期与 Hooks 简明指南

文章目录 一、类组件的生命周期方法1. 挂载阶段2. 更新阶段3. 卸载阶段 二、函数组件中的 Hooks1. useState2. useEffect3. useContext4. useReducer 结论 好的&#xff0c;我们来详细讲解一下 React 类组件的生命周期方法和函数组件中的钩子&#xff08;hooks&#xff09;。 …

软考(中级-软件设计师)数据库篇(1101)

第6章 数据库系统基础知识 一、基本概念 1、数据库 数据库&#xff08;Database &#xff0c;DB&#xff09;是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储&#xff0c;具有较小的冗余度、较高的数据独立性和扩展…

FITS论文解析

在本文中&#xff0c;作者探讨了如何将复杂的频域特征提取与简单的线性模型&#xff08;如DLinear&#xff09;结合&#xff0c;以优化时间序列预测任务的效率和解释性。本文的核心思想是利用频域处理和DLinear的简化结构来达到高效的预测能力&#xff0c;同时保留对复杂特征的…

Ubuntu 搭建Yapi服务

新手上路&#xff0c;小心开车 1. 安装mongo数据库 第一步&#xff1a;docker pull mongo 拉取mongo镜像&#xff1b; 第二步&#xff1a;启动mongo镜像 docker network create yapi_networkdocker run -d \-p 27017:27017 \--name mongodb \-e MONGO_INITDB_ROOT_USERNAMEya…

【进度猫-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

JAVA 插入 JSON 对象到 PostgreSQL

博主主页:【南鸢1.0】 本文专栏&#xff1a;JAVA 目录 ​编辑 简介 所用&#xff1a; 1、 确保 PostgreSQL 数据库支持 JSON&#xff1a; 2、添加 PostgreSQL JDBC 驱动 3、安装和运行 PostgreSQL 4、建立数据库的连接 简介 在现代软件开发中&#xff0c;由于 JSON 数据…

前端通过nginx部署一个本地服务的方法

前端通过nginx部署一个本地服务的方法&#xff1a; 1.下载ngnix nginx 下载完成后解压缩后运行nginx.exe文件 2.打包你的前端项目文件 yarn build 把生成的dist文件复制出来&#xff0c;替换到nginx的html文件下 3.配置conf目录的nginx.conf文件 主要配置server监听 ser…

深度学习基础知识-损失函数

目录 1. 均方误差&#xff08;Mean Squared Error, MSE&#xff09; 2. 平均绝对误差&#xff08;Mean Absolute Error, MAE&#xff09; 3. Huber 损失 4. 交叉熵损失&#xff08;Cross-Entropy Loss&#xff09; 5. KL 散度&#xff08;Kullback-Leibler Divergence&…