Linux环境详解

news/2024/5/3 10:07:28/文章来源:https://blog.csdn.net/weixin_58867976/article/details/126607126

目录

vim的详细解绍

程序运行过程(C)

Linux调试器——gdb

制作进度条

在Linux中使用gitee


vim的详细解绍

vim的概念 

vim是一个文本编辑器(多模式的编辑器),从定位上,和记事本没有任何差别,是vi的前身

vim的主要三种模式

命令模式,插入模式,底行模式

三种模式切换

 

vim的命令模式

光标相关

光标除了可以用上下左右键移动外,还能用h(左),j(下),k(上),l(右)

光标位置锚点:shift+^——>当前行行首)  shift+$——>当前行行尾

gg——>起始行  shift+g——>结束行  n+shift+g——>指定行

w/b:按照单词为单位进行前后光标移动

文本操作

yy:复制当前行

nyy:复制当前行及其之后的n行,包括当前行

u:撤销误操作

p:粘贴

np:一次重复粘贴n行

dd:删除当前光标所在行,支持ndd

dd+p:剪切功能

shift+~:快速大小写切换

x:左向右删除光标之后的一个字符,支持nx

X:右向左删除光标之前的一个字符,也是支持nX

r:替换一个字符,即光标所在的字符,支持nr

shift+r:替换模式,直接进行多个内容的替换

Ctrl+r:撤销最近的撤销

vim的底行模式

set nu:调出行号

set nonu:取消行号

vs 文件:多文件操作

w:保存

q:退出

!:强制[w!,q!,wq!]

vim的配置

创建一个.vimrc的隐藏文件,然后进入该文件进行配置,比如设置行号,然后保存退出,再进入其

它文件时就有了行号

不过一般不自己去配置,采用别人已经配置好了的即可,如下链接就是一个简易版的vim配置,只

需将其拷贝到Linux上即可

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

注意:vim配置在自己的配置文件中,只会影响自己的操作!

程序运行过程(C)

一个C语言程序的正常运行有四步:预处理,编译,汇编,链接

预处理:头文件展开,去除注释,条件编译,宏替换等

下图中的E让程序完成预处理后,就停下来,而-o test.i,则是生成一个临时文件,将预处理后的

结果保存在临时文件中,而不是打印在屏幕上

编译:将C语言代码转换成汇编代码

下图中的S表示开始进行翻译,在完成翻译后停下来,和上面类似,将翻译后的结果保存至临时文件中

汇编:将汇编代码转换成机器可识别代码

下图中的c表示开始进行程序的翻译,完成汇编工作后停下来,和上面类似,将翻译后的结果保存

临时文件中,这里的test.o就等同于vs中的test.obj文件

以二进制形式输出到屏幕

链接:生成可执行文件或库文件

链接过程是将我们自己的代码中的函数调用,外部数据和库关联起来

下图中将链接后的结果保存至一个文件中,这个文件是一个可执行文件,相当于vs中的.exe文件

上述中的gcc -c test.c -o test.o也可写成gcc -o test.o test.c

在Linux中,静态库:.a,动态库:.so,都和程序成功运行有关,也就可分为静态链接和动态链接

动态链接:比如你在学校,没有电脑使用,需要查资料时,就到网吧去查,从学校到网吧再到学

校,就是一个动态链接的过程

静态链接:比如你自己买了台电脑,就不再需要去网吧查资料,需要查时,在自己电脑查就可以,

这就是静态链接,静态链接也就是将库中的代码拷贝进我自己的可执行程序中。不再需要使用任何

库!

如下图,gcc默认采用动态链接方式,形成可执行程序 

静态链接需要静态库,动态链接需要动态库!

如下图,两种链接方式形成的文件占用空间的大小很显著

Linux调试器——gdb

如果一个程序是可以被调试的,那该程序的二进制文件一定加入了一些debug信息!

centos中,默认的可执行程序是debug

如下图,要将release版本变为debug版本,则要在后面加-g,而通过对比可看出debug所占的空

间要大一些,在debug版本中同时也能看到debug版本中的一些debug信息

注意:gdb调试程序,必须是debug方式发布,也就是gcc -g

调试快捷键

下方的test得是一个可执行文件!

l:每次显示最多10行,可以指定某行

b:打断点

d:删除断点

info:显示断点信息,而下方这个y表示这个断点有用,如果是n,则表示这个断电被禁用了

enable:启用断点

disable:禁用断点

run:直接运行程序

display:显示变量大小

undisplay:取消变量显示大小

until:跳转到指定行

continue:跳至下一个断点

 finish:执行到当前函数返回,然后停下来等待命令

s:相当于vs中的F11,逐语句

n:相当于vs中的F10,逐过程,与s不同的是它遇到函数调用,不会进入函数

quit:退出函数调用

make与Makefile

make是一条命令,Makefile是一个文件

在vs中,文件的编译顺序我们不需要管,vs自己帮我们去定了,但在Linux需要我们维护文件和文

件之间的互相依赖关系

只有依赖关系与依赖方法共同作用才能达到形成可执行程序的目的!

创建可执行文件

下面第一个图第一个红线哪儿必须是table键,后面的-std=c99则是因为test.c中有

for(int i = 0;i <=100;++i),需要c99才能支持 i 这么定义,test依赖于test.c,而test.c形成test,

则需要依赖方法

做了上图中的后,只需要make就能执行其上图的黄色的哪一行指令,同时添加一个test的可执行

文件,第二次make后出现的提示,表示test文件已经存在了

清理可执行文件

下方的.PHONY是修饰对应的符号,让符号变成伪目标的概念,总是可以执行的,和上面第二次执

行make就有所不同

创建可执行文件只需要make,删除可执行文件是make clean的原因

make扫描Makefile文件的时候,默认只会形成一个目标依赖关系,一般是第一个!建议把创建可

执行文件放在第一行

如下图,也可以采用这种方式来配置Makefile文件,在输入make时,$@会被替换为test,而$^会

被替换为test.c

制作进度条

回车与换行(\n)的区别

回车:回到当前行的最开始

换行:列不变,新起一行

如下图,在运行下面的代码后,不会立即打印hello Mike!,而是会等程序结束后再打印,但并不

sleep语句比printf语句先执行

原因:

printf已经执行,但是数据没有被立即刷新到显示器中!,因为没有\n,所以字符串会暂时保存至

用户C语言级别的缓存区

显示器设备刷新策略就是遇到\n即进行刷新

如果想不带\n,让它快速刷新,就可以调用下图中的函数接口

 

C程序,默认会打开三个输入输出流

stdin:键盘,stdout:显示器,stderr:显示器

注意:

凡是显示到显示器上面的内容都是字符

凡是从键盘读取的内容也是字符

键盘与显示器也被称为字符设备!

如下图,就是一个简易进度条的代码,\r是回车,让其每次都从一行的开头刷新,用usleep是以微

秒为单位,而sleep则是以秒为单位,会太慢,所以这里用usleep,前面\033[31m则是printf的配

色方案中的一种,来改变颜色

在Linux中使用gitee

安装git,安装完成后,输入指令可以看到一些信息及其版本

将其仓库克隆在Linux上,即把地址拷贝到下面指令的后面即可,完成后可以看到一个新的文件

  

添加文件,git add  文件 

提交文件,git commit -m 日志,填日志信息

如果出现上图所述的情况,就需要输入下图中的信息,邮箱和gitee用户名

最后是git push即可,然后就可以在仓库中看到刚上传的文件

git status

文件被添加后,可以看到将要被提交的文件

 

git log 

可以看到提交的文件的日志信息 

 

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

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

相关文章

2022“杭电杯”中国大学生算法设计超级联赛(5)

Bragging Dice 两个人掷骰子&#xff0c;两人都知道对方手中和自己手中的牌数&#xff0c;现在有两种操作&#xff0c;一种是挑战&#xff0c;即打开盖子&#xff0c;看是否是前一人说的那样&#xff1b;另一种是声称&#xff0c;即给出判断&#xff0c;类似有x个y点的骰子这样…

[MySQL数据库部署及初始化相关]

一、MySQL安装前系统环境检测 1.selinux和iptables需要关闭 cat /etc/sysconfig/selinux sed -i s/enable/disable/g /etc/sysconfig/selinuxchkconfig --list|grep iptables chkconfig iptables off chkconfig --list|grep iptables2.I/O调度系统默认是cfq模式&#x…

IDEA 创建 Servelet 项目

本文主要讲述如何在 idea 中添加 Servelet &#xff0c;适合初学者及从 Eclipse 开发工具转为 IDEA 的开发人员学习 环境介绍 系统环境&#xff1a;win11 开发工具版本&#xff1a;IntelliJ IDEA 2022.2.1 项目创建及配置流程 1.创建 Java 项目 2.添加框架支持 3.添加 classes…

如何仅使用 CSS 创建响应式网站

如何仅使用 CSS 创建响应式网站 使用 vw 和 rem 构建响应式页面。Photo by 用户体验商店 on 不飞溅 前言 从移动浏览器或应用程序访问的网站越来越多。对我来说,在空闲时间,我基本上是用手机访问网站。移动浏览器对用户来说很方便,但对开发人员来说却是痛苦的,因为屏幕大…

概述:隐式神经表示(Implicit Neural Representations,INRs)

隐式神经表示&#xff08;Implicit Neural Representations&#xff0c;INRs&#xff09;1 简介1.1 传统的隐式表示1.1.1 代数表示1.1.2 函数表示1.1.3 水平集表示&#xff08;level set&#xff09;1.2 什么是隐式神经表示1.3 隐式神经表示的优缺点1.3.1 优点1.3.2 缺点2 应用…

GD32(7)程序烧录及运行

目录简介启动方式Boot00&#xff0c;Boot1xBoot01&#xff0c;Boot10Boot01&#xff0c;Boot11烧录方式ICPISPIAPIAP的作用IAP与ICP、ISP的运行差别IAP的Bootloader程序实现IAP的APP程序实现简介 微控制器在硬件中作为核心&#xff0c;通过执行保存在内部存储器中的程序&#x…

网站安全防护措施有哪些

想要我们的网站在网络中安全稳定运行&#xff0c;网站安全防护是不可或缺的环节&#xff0c;那么网站安全防护需要做哪些措施呢&#xff0c;这些措施能起到什么作用呢&#xff0c;接下来一起跟着小编一起来看看吧。 服务器安全狗和网站安全狗2022新版更新 更有效帮助用户防护网…

精品基于Uniapp+SSM实现的公园植物介绍APP

《[含文档PPT源码等]精品基于UniappSSM实现的公园植物介绍APP[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务…

设备通过国标GB28181/海康Ehome接入EasyCVR,视频无法打开的原因分析及解决方法

EasyCVR平台支持多类型设备、多协议方式接入&#xff0c;包括市场主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等&#xff0c;以及厂家私有协议&#xff0c;如海康SDK、大华SDK、海康Ehome等。平台可将接入的流媒体进行处理及分发&#xff0c;分发的视频格式包括RTSP、RTM…

Swift Practice # 172 Swift 取得网页资料并制作台湾乡镇气象连结JSON

Swift Practice # 172 Swift 取得网页资料并制作台湾乡镇气象连结JSON 上一篇解决了使用Google Admob套件所产生的Link问题,让广告可以顺利显示。 [ Swift Practice # 171 Google Admod 闪退之-ObjC Linker 与SPM 上一篇简单的练习改变SwiftUI Map的显示比例,达到所有显示资料…

python3 词频统计计数分析+可视化词云 jieba+wordcloud 数据分析

hi&#xff0c; 大家好&#xff0c;我是宋哈哈&#xff0c;今天分享一个利用 python 的 jieba 库 和 wordcloud 词云库 做一个字符串的词频分析和词云可视化 编程环境&#xff1a; python 版本&#xff1a;3.6.8 编辑器&#xff1a;pycharm 2020.1.3 专业版 系统环境&#xff1…

使用聚类(K-means)分析方法对骑手进行分类标签定义

什么是聚类分析 聚类分析的目标就是在相似的基础上收集数据来分类&#xff0c;属于无监督学习。就是通过行为数据&#xff0c;通过算法将相似的人群聚集在一起&#xff0c;形成不带标签的人群簇。再人为的对人群簇进行分析&#xff0c;寻找特征标签。 一、数据构建 根据骑手的…

电脑重装系统开机后运行慢怎么办

小编就给大家分享四个电脑运行慢的方法&#xff0c;可以选择适合自己的方法去使用&#xff0c;一般情况都是可以解决掉电脑开机后运行慢的问题&#xff0c;我们接着看看吧。 还有其它的电脑重装系统方法 工具/原料&#xff1a; 系统版本&#xff1a;windows7系统 品牌版本&a…

Leetcode题解——30. 包含min函数的栈(辅助栈思想)

题目地址&#xff1a;剑指 Offer 30. 包含min函数的栈 - 力扣&#xff08;LeetCode&#xff09; 目录 一.算法思想 二.代码实现 三.拓展思考 首先说结论&#xff0c;这道题虽然难度不大&#xff0c;但是算法思想很重要&#xff0c;是辅助栈应用的生动实例。 所以&#xff…

(10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】

&#xff08;1&#xff09;工业界推荐系统-小红书推荐场景及内部实践【业务指标、链路、ItemCF】 &#xff08;2&#xff09;工业界推荐系统-小红书推荐场景及内部实践【UserCF、离线特征处理】 &#xff08;3&#xff09;工业界推荐系统-小红书推荐场景及内部实践【矩阵补充、…

VSCode 配置 C++ 环境

开学了&#xff0c;后面更新速度会更慢&#xff0c;望周知。 接上回: https://blog.csdn.net/orangebench11/article/details/126111356 先说一下, 这个教程不是给完整json复制粘贴, 是要跟教程配置 (放心, 大部分配置都很简单)。 安装VSCode 官网: Visual Studio Code - C…

2021年研究生数模B题论文记录

2021年研究生数模B题论文记录1.常见数据处理方法&#xff1a;2.相关性系数选择3.聚类算法4.一种数据降维方式5.预测模型文章来源 2021年全国大学生研究生数学建模竞赛优秀论文集合&#xff0c;B题&#xff0c;文章编号&#xff1a;B21100130067 1.常见数据处理方法&#xff1a;…

Golang高性能日志库zap + lumberjack 日志切割组件详解

文章篇幅较长&#xff0c;可以先收藏防止迷路~ 目录zap日志库1. why zap?2. 简单使用3. 自定义logger例子4. Gin项目使用zap6. lumberjack 日志切割组件zap日志库 在许多Go语言项目中&#xff0c;我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中&a…

Java刷题面试系列习题(六)

文章目录前言Java题目练习⭕题目一&#xff1a; 统计一句话中重复单词的个数&#x1f31f;代码演示&#x1f4af;思路解析⭕题目二&#xff1a; map简单应用&#x1f31f;代码演示&#x1f4af;思路解析⭕题目三&#xff1a; 集合排序&#x1f31f;代码演示&#x1f4af;思路解…

分享查题公众号制作过程

分享查题公众号制作过程 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转&#xf…