Linux环境基础和基础开发工具使用

文章目录

    • 一、yum软件管理器
        • 1、包管理器
        • 2、yum
        • 3、apt
        • 4、安装源
    • 二、编辑器vim
        • 1、各种模式
        • 2、打开时直接让光标定位到指定号
        • 3、!加命令字符
    • 三、命令模式
        • 1、i 进入插入模式
        • 2、**Shift + :** 进入底行模式
        • 3、光标定位
        • 4、ZZ(大写)保存并退出vim
        • 5、R 进入替换模式
        • 6、u撤销操作
        • 7、ctrl + r对u进行撤销
        • 8、ctrl + ww 分屏情况下光标移动
        • 9、ctrl + v进入视图模式批量化编辑
    • 四、底行模式
        • 1、ESC退回命令模式
        • 2、set nu调出行号
        • 3、w 保存
        • 4、q退出
        • 5、/ 定位查找
        • 6、! 后跟命令行操作
        • 7、vs 文件对比开启分屏
        • 8、%s/文本1/文本2/g替换
    • 五、编译器gcc/g++
        • 1、编译和运行
        • 2、编译运行的知识
        • 3、动静态库
    • 六、对vim进行配置
    • 七、配置sudo的可信任用户
    • 八、自动化构建-make/Makefile
        • 1、make和makefile是什么
        • 2、使用
        • 3、更加具有通用型的makefile
        • 4、Makefile完成多文件的编译
    • 九、Linux第一个系统程序——进度条
        • 1、回车与换行
        • 2、行缓冲区
        • 3、进度条代码

一、yum软件管理器

Linux 下按照软件的方案:

  • 1、源代码按照
  • 2、rpm包安装
  • 3、包管理器进行安装-----yum/apt
1、包管理器

yum / apt 就像手机的应用商店
解决依赖/下载/安装/卸载
通过到软件包服务器查找、下载请求

  • 操作系统生态问题!
  • Centos 、Ubnutu、kail对应的群体不同
    在这里插入图片描述
    在这里插入图片描述
    Linux机器上,有对应的给yum / apt提供的配置文件!url 或者IP地址
    软件包服务器在国外,下载软件比较慢。
    所以国内组织、高校,就自己花钱把国外的软件包拷贝到国内服务器,这叫镜像。
    配置文件是软件源,替换成国内的。
2、yum

查看包服务器中软件包,只找了软件名包含ls 的软件包名字
在这里插入图片描述

安装,默认安装到系统目录下

yum install 后跟软件包名字

安装软件受权限约束,root 或者sudo yum /apt 提权

卸载:

yum remove 软件名
yum -y remove 软件名 //强制卸载,问我的全部yes 

也需要root权限,才能执行

在这里插入图片描述
yum一次只能安装一个,如果中途关掉使用下面代码结束:

killall yum
3、apt

搜索不支持管道

apt search xxx

安装

apt install -y xxx

卸载

apt remove -y xxx
4、安装源

本地yum源配置文件所在的路径:
在这里插入图片描述
在这里插入图片描述
软件源分为稳定软件源和扩展软件源,甚至有更多分类

安装扩展软件源:

yum install -y epel-release

二、编辑器vim

1、各种模式
  • 1、vim是一个专注的编辑器
  • 2、多模式的编辑器

在这里插入图片描述
vim是Linux操作系统自带的编辑器

一般的三种模式

在这里插入图片描述在这里插入图片描述

2、打开时直接让光标定位到指定号

在这里插入图片描述

3、!加命令字符

快速帮我执行最近的历史命令
在这里插入图片描述

三、命令模式

1、i 进入插入模式

a也进入插入模式光标向后移动
o进入插入模式,光标位置向下插入一行

  • 打开vim指令默认处于命令模式,输入i 后可以编写代码,左下角会出现INSERT
  • vim 不支持鼠标
    在这里插入图片描述
2、Shift + : 进入底行模式
3、光标定位
  • gg :光标定位到最开始
  • G : 光标定位到最结尾
  • 行号 + gg 或者 行号 + G : 光标去到指定的行号
  • $ :定位到当前行的最后
  • ^ : 定位到当前行最前
  • h:左
  • l :右
  • j:下
  • k:上
  • w:以单词为单位向后移动,可以给前面带数字
  • b:以单词为单位向前移动,可以给前面带数字
  • yy:复制光标所在行,可以给前面加数字
  • p:粘贴,可以给前面加数字
  • dd:剪切或删除,可以给前面加数字
  • x:删除光标当前位置的字符,可以带数字
  • X:删除光标之前位置的字符,可以带数字
  • ~:大小写转换
  • r:小范围文本替换,可以带数字
4、ZZ(大写)保存并退出vim
5、R 进入替换模式
6、u撤销操作
7、ctrl + r对u进行撤销
8、ctrl + ww 分屏情况下光标移动
9、ctrl + v进入视图模式批量化编辑

批量化注释的操作
先ctrl + v,用h、j、k、l 键选择要注释的行,选择之后然后输入shift +i,//在ESC一下自动完成注释
批量化去掉注释
ctrl + v,选择行和两列,然后d
在这里插入图片描述

四、底行模式

1、ESC退回命令模式
2、set nu调出行号
  • set nonu 设置没有行号
3、w 保存
  • w!强制保存
4、q退出
  • wq保存并退出
  • q!强制退出
5、/ 定位查找
  • n下一个
6、! 后跟命令行操作

不退出vim的情况下指向命令行操作

7、vs 文件对比开启分屏

光标在那个文件就对那个文件操作

8、%s/文本1/文本2/g替换

将文本1替换成文本2

五、编译器gcc/g++

1、编译和运行

编译生成可执行程序,-o 选项可以设置生成文件的名字
在这里插入图片描述
运行
在这里插入图片描述
gcc常用选项:
在这里插入图片描述

2、编译运行的知识

在这里插入图片描述

3、动静态库

使用动态链接必须在系统里面存在动态库,动态库也称为共享库
在这里插入图片描述

使用静态链接必须在系统里面存在静态库
静态链接:把我们要的库方法实现,直接拷贝到我们的可执行程序中

在Linux系统中默认只会存在动态库
安装静态库命令:

yum install glibc-static libstdc++-static -y

六、对vim进行配置

在这里插入图片描述
修改当前家目录下的.vimrc的配置文件
在这里插入图片描述
最简单的配置让vim在打开时就能有行号

自动配置在 Centos7 x86_64下的链接
https://gitee.com/HGtz2222/VimForCpp

七、配置sudo的可信任用户

sudo配置文件所在位置:
在这里插入图片描述
必须使用root账号修改,把信任的用户添加进入配置文件

在这里插入图片描述

八、自动化构建-make/Makefile

1、make和makefile是什么
  • make是一个命令
  • makefile是一个文件
2、使用

简单的完成对.c文件的生成可执行程序
在这里插入图片描述
make指令自动执行Makefile

Makefile里的内容:
在这里插入图片描述
依赖关系和依赖方法,形成目标文件

在这里插入图片描述

在这里插入图片描述
make 会自定向下扫描makefile文件,默认形成第一个目标文件
如果想指定形成,make后面跟上目标文件名称

.PHONY 代表的含义是总是被执行的

Makefile的注释用#号
make会自动推导,直到依赖文件存在
在这里插入图片描述

3、更加具有通用型的makefile

这种类似C语言的宏替换:
在这里插入图片描述
但依然不够通用,只适合当前目录下只有一个源文件

4、Makefile完成多文件的编译

获取当前目录中所有.c文件:

  • $(命令行命令)
  • makefile自己提供了一个语法wildcard的函数
    在这里插入图片描述
    在这里插入图片描述
    这两个命令是等价的

让命令不回显:

  • 在命令前加@,不让命令回显
    在这里插入图片描述

把.c文件替换.o文件:

  • 利用makefile自己的语法规则
    在这里插入图片描述

$^ :代表依赖文件列表
$@: 代表目标文件
%:通配符
$<:把依赖文件一批文件一个一个交给对应的命令

在这里插入图片描述

实现效果:
在这里插入图片描述

九、Linux第一个系统程序——进度条

1、回车与换行

回车跟换行是两个不同的操作。
\r: 回车表示从尾到首的过程。
\n: 换行表示从该行到下一行。

2、行缓冲区

程序在打印到显示器上是,内容存在缓冲区中,缓冲区的刷新策略是行刷新。
程序退出会强制刷新。
如果不想行刷新,想立即刷新:
在这里插入图片描述
C语言提供了fflush策略强制刷新
在这里插入图片描述
刷新标准输出流

3、进度条代码

知识点默认gcc是C89需要改版本
在编译时加选项 -std=c99
在这里插入图片描述

代码:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【java】哈希<两数之和> 理解哈希

两数之和 题目描述&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你…

【Linux】信号三部曲——产生、保存、处理

信号 1. 信号的概念2. 进程如何看待信号3. 信号的产生3.1. kill命令3.2. 终端按键3.2.1. 核心转储core dump3.2.2. OS如何知道键盘在输入数据 3.3. 系统调用3.3.1. kill3.3.2. raise3.3.3. abort 3.4. 软件条件3.4.1. SIGPIPE信号3.4.2. SIGALRM信号 3.5. 硬件异常3.5.1. 除零异…

Vue 计算属性和监听器

文章目录 一、计算属性1. 计算属性定义2. computed 比较 methods3. 计算属性完整写法 二、监听器1. 普通监听2. 添加额外配置项 一、计算属性 1. 计算属性定义 概念&#xff1a;基于现有的数据&#xff0c;计算出来的新属性&#xff0c;依赖的数据变化&#xff0c;自动重新计…

【计网】实现reactor反应堆模型 --- 框架搭建

没有一颗星&#xff0c; 会因为追求梦想而受伤&#xff0c; 当你真心渴望某样东西时&#xff0c; 整个宇宙都会来帮忙。 --- 保罗・戈埃罗 《牧羊少年奇幻之旅》--- 实现Reactor反应堆模型 1 前言2 框架搭建3 准备工作4 Reactor类的设计5 Connection连接接口6 回调方法 1 …

外包干了2年,快要废了。。。

先说一下自己的情况&#xff0c;普通本科毕业&#xff0c;在外包干了2年多的功能测试&#xff0c;这几年因为大环境不好&#xff0c;我整个人心惊胆战的&#xff0c;怕自己卷铺盖走人了&#xff0c;我感觉自己不能够在这样蹉跎下去了&#xff0c;长时间呆在一个舒适的环境真的会…

linux驱动-i2c子系统框架学习(2)

linux驱动-i2c子系统框架学习(1) 在这篇博客里面已经交代了i2c设备驱动层&#xff0c;主要的功能就是编写具体i2c的外设驱动&#xff0c;和创建设备接点给上层使用 &#xff0c;按之前学习的字符设备&#xff0c;有了设备节点&#xff0c;就可以对硬件操作了&#xff0c;在i2c…

Webserver(4.6)poll和epoll

目录 pollclient.cpoll.c epollepoll.cclient.c epoll的两种工作模式水平触发边沿触发 poll poll是对select的一个改进 select的缺点在于每次都需要将fd集合从用户态拷贝到内核态&#xff0c;开销很大。每次调用select都需要在内核遍历传递进来的所有fd&#xff0c;这个开销也…

Stable Diffusion的解读(一)

Stable Diffusion的解读&#xff08;一&#xff09; 文章目录 Stable Diffusion的解读&#xff08;一&#xff09;摘要Abstract一、机器学习部分1. Stable Diffusion的早期工作1.1 从编码器谈起1.2 第一条路线&#xff1a;VAE和DDPM1.3 第二条路线&#xff1a;VQVAE1.4 路线的交…

计算机网络——TCP篇

TCP篇 基本认知 TCP和UDP的区别? TCP 和 UDP 可以使用同一个端口吗&#xff1f; 可以的 传输层中 TCP 和 UDP在内核中是两个完全独立的软件模块。可以根据协议字段来选择不同的模块来处理。 TCP 连接建立 TCP 三次握手过程是怎样的&#xff1f; 一次握手:客户端发送带有 …

ROS话题通信机制理论模型的学习

话题通信是ROS&#xff08;Robot Operating System&#xff0c;机器人操作系统&#xff09;中使用频率最高的一种通信模式&#xff0c;其实现模型主要基于发布/订阅模式。 一、基本概念 话题通信模型中涉及三个主要角色&#xff1a; ROS Master&#xff08;管理者&#xff0…

【Android】名不符实的Window类

1.“名不符实”的Window类 Window 是一个窗口的概念&#xff0c;是所有视图的载体&#xff0c;不管是 Activity&#xff0c;Dialog&#xff0c;还是 Toast&#xff0c;他们的视图都是附加在 Window 上面的。例如在桌面显示一个悬浮窗&#xff0c;就需要用到 Window 来实现。Wi…

后端java——如何为你的网页设置一个验证码

目录 1、工具的准备 2.基本方法 3.实现类 4.实践 HTML文件&#xff1a; Java文件1:创建验证码 Java文件2:验证验证码 本文通过HUTOOL实现&#xff1a;Hutool参考文档Hutool&#xff0c;Java工具集https://hutool.cn/docs/#/ 1、工具的准备 如果我们通过hutool来实现这个…

【go从零单排】Strings and Runes 字符串和字符

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 概念 在Go语言中&#xff0c;rune 是一个内置的数据类型&#xff0c;用于表示一个Unicode字符。它实际上是一个别名…

如何在本地Linux服务器搭建WordPress网站结合内网穿透随时随地可访问

文章目录 前言1. 安装WordPress2. 创建WordPress数据库3. 安装相对URL插件4. 安装内网穿透发布网站4.1 命令行方式&#xff1a;4.2. 配置wordpress公网地址 5. 配置WordPress固定公网地址 前言 本文主要介绍如何在Linux Ubuntu系统上使用WordPress搭建一个本地网站&#xff0c…

vue data变量之间相互赋值或进行数据联动

摘要&#xff1a; 使用vue时开发会用到data中是数据是相互驱动&#xff0c;经常会想到watch,computed&#xff0c;总结一下&#xff01; 直接赋值&#xff1a; 在 data 函数中定义的变量可以直接在方法中进行赋值。 export default {data() {return {a: 1,b: 2};},methods: {u…

在 Java 中使用脚本语言

在 Java 中使用脚本语言&#xff0c;特别是在 Java 平台上集成如 Python、JavaScript 或 Ruby 等语言&#xff0c;通常可以通过 Java 的 Scripting API 来实现。这个 API 基于 JSR 223&#xff08;“Scripting for the Java Platform”&#xff09;&#xff0c;提供了一种标准方…

大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

微服务系列六:分布式事务与seata

目录 实验环境说明 前言 一、分布式事务问题与策略 1.1 分布式事务介绍 1.2 分布式事务解决策略分析 二、分布式事务解决方案 Seata 2.1 认识Seata 2.2 Seata的工作原理 2.3 部署Seata微服务 2.3.1 准备数据库表 2.3.2 准备配置文件 2.3.3 docker部署 2.4 微服务集…

Java 上机实践2(基础数据类型与数组)

&#xff08;大家好&#xff0c;今天分享的是Java的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 实验一&#xff1a;输出希腊字母表 一、实验目的 二、实验要求 三、程序代码 四、实验结果 实验二&#xff1a;…

w024基于SpringBoot的企业客户管理系统的设计与实现

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…