Linux中的工具使用【vim的存活级】

简介: Linux中的工具使用【vim的存活级】

Linux中的工具使用

工具:

1.程序的开发

1.1 软硬件的安装(yum)

功能:安装/卸载软件

指令(根目录):yum install app/yum removu app

指令(普通用户):sudo yum install app / sudo yum remove app

指令(不交互,直接进行):sudo yum -y install app /sudo yum -y remove app

指令(查找我要下载的文件):sudo yum list | grep app 前提:不知道app的全称


从我们手机上的软件管家来说,我们点击安装,怎么知道软件管家是去哪里下载这个软件呢?

所以这些软件管家一般都是有内置下载链接的地址的(配置文件)

同理:我们的yum也是(拥有自己的配置文件——yum源)

说白了就是:yum自带的配置文件中有各个软件的下载地址


更新yum源问题:

a.先进行备份老的yum源 CentOS-Base.repo

b.wegt 获取新的yum源配置文件 – 可以通过网络搜索得到

c.mv 重命名成为CentOS-Base.repo

d.yum clean all && yum makecache (先清空原来的缓存,然后重置缓存的意思)


并且如果你想要安装的软件,找不到,就有可能是在扩展的yum源中:epel.repo

指令:sudo yum install -y epel-release (根据base yum源,帮我们找到和他匹配的扩展yum源),然后直接sudo yum install -y 即可!


如何写代码(vim)

Linux编辑器–vim的使用

vim是一个具有多模式的编辑器–各种模式的用法都有差别–各种模式的切换

一但在Linux中使用了vim这个指令,接下来我们就只需要在vim中进行一系列的操作

首先已进入vim(命令模式)

我们输入命令(i/a/o)表示进入插入模式(不同的指令只是进入的方式不一样而已)

进入了插入模式,我们就可以进行代码的编写了

编写完代码之后,我们先要用esc退出插入模式,然后进入底行模式

进入底行模式方法(shift+:)

进入底行模式之后,就是退出(q),但是退出前要保存,所以(wq),退出并保存

此时就可以编译和执行了

并且我们有时可能还会用到替换模式(shift+r)


2.1 vim的最小集

想从别的模式进入到命令模式就是无脑esc

vim就是一个编辑器(不是编译器)

退出的时候一般都是先保存再退出

我们在进行vim模式的切换的时候,我们一般只使用3到5中模式


2.2 vim的指令集


2.2.1 底行模式:

底行模式下,调出和去掉行号:set nu/set nonu

%s///g:把想要替换的内容进行替换,例:%s/hello/Hello/g

/key :表示进行搜索(key表示的是搜索的内容)

!command:表示不需要退出vim进行对vim的指令操作(如:!gcc 、!./a.out)

vs file :进行分屏,文件名由我自己输入

并且在vim的分屏模式下,光标在哪里,就表示我们在写哪一个文件

切换光标到不同的界面:Ctrl+ww


2.2.2 命令模式:

因为在进行vim的操作时,大部分的命令,都是在命令模式下进行的(切记不是底行模式也不是插入模式)

2.2.2.1

复制/粘贴指令:

yy:复制当前行

nyy:复制当前行以下的n行

p:粘贴一行

np:粘贴多行相同的内容到当前光标之下

2.2.2.2

撤销/反撤销指令:

u:撤销刚刚的操作(Windows中的Ctrl+z)

Ctrl + r 反撤销(Windows中的Ctrl+y)

2.2.2.3

剪切/删除指令:

dd:对当前行进行剪切/删除

ndd:对当前行以下的n行内容进行剪切/删除

若不粘贴就是删除,粘贴就是剪切

2.2.2.4

光标的灵活移动指令:

G:将光标定位到文档的最结尾(Windows中的Home键)

gg:将光标定位到文档的最开始(Windows中的End键)

nG:将光标定位到文档的指定行

$:将光标定位到文档行的最后面

^:将光标定位到文档行的最前面

nw/nb:在文档行中进行前后移动,w向前,b向后,前提是按照单词为单位

~:快速大小写的切换

r:替换光标所在的字符

nr:替换光标后面的n个字符

nx:删除光标以后的n个字符

nX:删除光标以前的n个字符


2.3 vim的配置

我们正常一打开vim,vim就会先去访问.vimrc这个配置文件

所以我们想要对vim进行改变,就是对.vimrc进行改变

指令:vim .vimrc

配置不需要麻烦:自动配置你值得拥有


如何编译(gcc/g++)

编译我们在鹏哥的C语言上是有学过的

但是当时可能是比较不明白(听的懵懵懂懂的)

我们这边把编译给复习一下:

3.1 预处理

包括:头文件的展开合并到源文件,条件编译,宏替换,去注释等

3.2 编译

包括:将C语言转换成汇编语言

3.3 汇编

包括:将汇编文件转换为(可重定位的)目标二进制文件(目前还不可以被执行)-----只是把我们自己写的(除了printf和scanf之类的库函数)翻译成为二进制目标文件

3.4 链接

包括:将我们自己形成的.obj文件和库文件进行结合,从而形成可执行文件

以上就是大致的编译过程,我们现在就使用Linux中的gcc来具体的看一下这些过程都是怎样的

例:我们直接得到可执行程序(a.out)指令:gcc file.c

或:gcc -o file.obj file.c -> gcc -o file file.c => 同理,(.obj)只是写给我们自己看的而已


编译原理展开理解:

3.1.1 预处理(后缀.i)

指令:gcc -E test.c -o test.i => 表示:将我的test.c文件进行预处理完之后,再把预处理之后的代码存到test.i中

这样我们就得到了预处理之后的test.i文件了(我们就可以进到文件之中看一下我们自己的代码和预处理之后的代码的区别了)

3.2.1 编译(后缀.s)

指令:gcc -S test.i -o test.s => 表示:将我预处理之后的test.i文件进行C语言转换成汇编语言,然后把转换成汇编语言之后的文件存到test.s文件中

这样我们就得到了C语言转换为汇编语言之后的test.s文件了(我们就可以进到文件之中看一下C语言变成汇编语言之后是什么样子的了)

3.3.1 汇编(后缀.o)

指令:gcc -c test.s -o test.o => 表示:将我的汇编语言文件转换成一个二进制的文件,然后把这个二进制的文件存到test.o文件中

这样我们就得到了汇编语言变成二进制test.o文件了(我们就可以进到文件之中看一下此时的test.o文件是长什么样了)

注意:此时的这个test.o 文件是一个不可执行文件(因为:还没有进行链接),并且不是权限的问题,可以通过提权证明

3.4.1 链接

链接过程涉及到:调用C语言库之类的问题,具体不容易看到,理解就行

总:虽然我们可以直接通过 gcc test.c来编译一个文件,但是,上述过程可以让我们更好的理解编译的具体原理!


C语言库分为两种:本质就是文件

静态库:libxxxxx.a 以a为后缀的就是静态库

动态库:libxxxxx.so 以so为后缀的就是动态库


如何理解动态库:

情景:一个初中生考上了高中,然后设置需要完成的作业列表(包括去网吧),并且通过学长得知如何去网吧,然后完成作业,前往网吧,找到网管,找到电脑,回到学校

此时有了这个情景,我们可以进行理解:


初中生(一个程序)

高中(内存) |

作业列表(程序中的具体代码)

完成作业(进行代码的编译)

学长(编译器的链接过程)

网管(搜索相应的库函数)

1684827416794.png

1684827435891.png静态链接指令:

gcc test.c -o test.static -static (前提是你有静态库)


如何调式(gdb)

后面再说


代码的自动化构建(make/makefile)

make是一个命令

makefile是一个文件

规则:

Makefile是一个围绕依赖关系和依赖方法构建的一个自动化编译的工具

依赖关系、依赖方法

完成一件事情一定要有正确的依赖关系和依赖方法

.PHONY file – 表示:file总是被执行,就是每次make都会被执行

如何进行重新执行,就是通过更改对比文件创建的时间来判断(通过touch来更改文件的创建时间)


相关文章
|
5月前
|
安全 Linux Shell
四、Linux核心工具:Vim, 文件链接与SSH
要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。
458 4
|
9月前
|
Linux 开发工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
|
5月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
497 16
|
5月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
288 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
7月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
217 1
Linux系统性能调优技巧和相关工具
|
7月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
839 16
|
6月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
9月前
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
459 32
|
8月前
|
NoSQL Linux 开发工具
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
本文介绍了yum 包管理工具、Vim 编辑器、gcc/g++ 编译器、gdb 调试器、编译原理及 Makefile 的使用,同时还配备了如何使用,以及图解。旨在帮助读者更好地理解和应用这些工具与技术。
433 0