Linux基础环境开发工具的使用(yum,vim,gcc,g++)

这篇具有很好参考价值的文章主要介绍了Linux基础环境开发工具的使用(yum,vim,gcc,g++)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


首先先说明一点:
Centos系统适用于yum
而Ubanto适用于apt-get

一.yum

在Linux中我们也要进行工具/程序/指令的安装,检查和卸载,

而我们安装软件的方式:
1.源代码安装-需要进行交叉编译的工作
一般那些很强的程序员中的大佬才能拿捏
2.rpm包直接安装,也很麻烦
3.yum直接安装

这就需要用到yum了
那么yum是什么呢?

1.yum的快速入门

yum:是我们Linux系统中预装的一个指令,负责搜索,下载,安装对应的软件

就像是手机上的应用商店等等,也是一个软件,
只不过是厂商内置的

而yum就相当于Linux中的应用商店
就像是是我们平常在手机上下载软件都是在应用商店中下载
在Linux中平常下载软件就是在yum中下载

而yum的基本指令是:

sudo yum install 软件/指令/工具的名字
sudo yum install -y 软件/指令/工具的名字:这个-y代表同意安装
否则会询问你是否确定要安装对应的软件/指令/工具

如果我们想要移除一个命令
yum remove command

执行sudo命令需要在sudoers file配置文件中
我们这篇博客中也会介绍使用vim来修改sudoers file文件

大家也可以切换为root用户
这样的话使用yum就不需要用sudo命令了

我这里切换为root来使用yum命令

1.yum安装软件

大家可以先安装一下这个sl指令

yum install -y sl

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我这里之前就安装过sl了,所以显示Nothing to do

如果安装成功了,那么执行sl就会显示
一辆火车经过

这里说一下如何安装g++
我们后续会介绍g++编译器的
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我这里之前就安装过g++了,所以显示Nothing to do

2.yum卸载软件

下面我们看一下如何使用yum进行卸载呢?

yum remove sl
移除sl命令

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
移除之后我们执行sl命令,发现无法执行,也就说明我们移除成功了

然后这个时候我就能演示一下安装sl成功的情形了
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

2.yum的生态环境

几个问题
首先我们先明确一点:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
在这里补充一下:

1.操作系统的分化

一款操作系统的好坏不仅仅要看这个操作系统本身,大家在效率上是差不多的,
因此在选择一款操作系统时还要看:

1,操作系统的版本,因为版本问题能够决定操作系统中历史含留的bug问题
2.这款操作系统使用的人数
因为人数多不多就能决定这款操作系统所能暴露出来的问题充不充分
比方说:
人数多了的话,这款操作系统的社区的活跃度就高,问题暴露的就越充分,问题暴露的多,自然而然就会有更多的人去解决问题
而且用的人多,这款操作系统的配套资源就会更加充分,
社区的维护者也会更加专业等等等等

因此Linux商业化操作系统分为了Centos,Ubanto,Kali等等
Centos主要与企业级开发相关
Kali主要与网络安全相关
等等等等

2.四个问题

1.服务器是谁提供的呢?
2.服务器上的软件是谁提供的呢?
3.为什么要提供呢?

这三个问题可以一起解释

不同操作系统/社区所定义的基调不同,生态不同,这也就吸引了不同领域的人们去维护,去使用

使用的人多了,暴露出来的问题就多了,解决的人也多了,并且发布配套资源的人也就多了,这个社区就会变得更加偏向于那个基调/生态
就会吸引更多人去使用,维护,从而形成了一个良性循环

这样不同社区就会有更多的人去使用,去维护
就会有更多人从中受益,既然从中受益,那么自然就更加不希望这个社区出现问题,因此:

那些依赖于这些社区的人:
比如:创业公司,大/中/小型公司就会更加想要这个社区变好
因此他们可以投入金钱,提供对应的服务器

再比如:那些高水平的开发者,开源组织等等就可以提供对应的技术去提供服务器上的软件

他们为什么要去提供呢?
就是为了让自己所在的社区变得更好
从而让自己能够更好的去使用对应的操作系统,并从中受益

这也就形成了一个正向反馈
甚至不同的社区之间会形成"卷"

4.yum是如何得知目标服务器的地址和下载链接呢?

我们使用root,找到/etc/yum.repos.d路径下的Centos-Base.repo文件
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后vim进入(强烈建议大家再看完下面的vim之后在使用vim进入这个文件,否则你不知道该怎么退出来!!!)
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们找到这一行
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
找到对应的yum的目标服务器的地址和下载链接
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们打开这个链接
发现我们这个yum的目标服务器的下载链接是有阿里云提供的
这些就是阿里云从国外的镜像源镜像过来了,是为了更好的维护国内的社区
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
下载链接
其中,这个Centos-Base.repo文件就是我们所说的yum源

5.软件源

大家可以先执行一下这个指令

sudo yum install -y epel-release

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我这里之前已经安装过这个软件了,所以显示nothing to do
然后我们

ls /etc/yum.repos.d

发现有这个epel.repo文件,就说明安装成功
这个epel.repo就是扩展软件源
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
Linux中的软件源可以分为
1.基础软件源:十分稳定,经过了长期的"考验",已经广泛为人们所接受的软件,比方说我们的Centos-Base.repo
2.扩展软件源:这里面放的是一些新兴的软件,
当这些软件经过了长期的"考验"后,会选出一些很好的软件放入基础软件源中

并且也可以在基础软件源中淘汰一些不太好了的软件
这也就很好地进行了Linux中软件的更新换代
既可以保证基础软件中的软件足够稳定可靠,又可以保证软件的更新换代

也就是说我们平常在下载软件时,基础软件源和扩展软件源都需要去使用

二.vim

1.vim的快速入门

vim是一款多模式的编辑器,vim里面还有很多的子命令.来进行代码的编写操作

vim的模式

vim有三种常见模式:

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

它们之间切换的按键如下:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
使用vim也可以直接创建文件进行编写
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

刚进入的样子是这样的
此时就是命令模式
然后我们先使用i命令进入编辑模式
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

此时我们就可以在test.c中写代码了
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

接着我们使用Esc键回到命令模式
首先我们使用i来进入插入模式
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

然后我们就能发现:使用i进入插入模式时,光标位置没有任何变化
接着我们使用Esc键回到命令模式
然后使用a进入插入模式
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

然后我们就能发现:使用a进入插入模式时光标会向右移动一位
接着我们使用Esc键回到命令模式,并将光标复位
然后使用o进入插入模式
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

然后我们就能发现:使用o进入插入模式时会新起一行,并将光标移动到新起的那一行

一般情况下我们都是使用i进入插入模式

那么当前我的代码写完了,该如何退出呢?
首先:我们先调到命令模式
然后按shift+; 进入底行模式
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我们会发现左下角出现了一个冒号
也就是说现在已经进入了底行模式

然后我们输入:wq
然后按下回车键就能保存文件并退出该文件的编辑模式(vim)
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

2.vim中的快捷键

首先我们先明确两点:
1.插入模式下我们从键盘输入的字符信息都会被当作文本输入到该文件中
就像是Windows中的记事本一样
2.在我们没有对vim进行配置鼠标操作的状态下,在vim中我们是无法使用鼠标的

因为vim中在不进行鼠标操作的配置的状态下,是不好进行操作的
因此vim中拥有很多快捷键可以帮助我们定位光标等等
甚至可以说:当我们很好地熟悉了vim中这些快捷键后,书写代码等等是会比使用鼠标更快的

就像是ctrl+c ctrl+v 碾压了使用鼠标选中后右键进行复制粘贴的操作
ctrl+a 碾压了鼠标去进行全选的操作等等

3.关于vim的手动配置,大家可以看一下这位大佬的博客中的vim基础配置:
【从入门到进阶】vim基础配置+ 常用插件(NERDTree, cscope, rainbow等)
4.关于vim的自动配置,大家可以看一下这位大佬的博客中的那个在gitee中开源的vim自动配置的README.md
那位大佬的博客:vim的自动化配置(一条指令就够了)

该博客中提到的那个gitee的链接:
自动化配置vim的gitee链接

1.命令模式下的快捷键

1.光标定位指令

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
其实这里的shift+$就是$,也就是shift+4,
只不过如果说shift+4的话:
4在键盘的数字区有,在键盘的F1,F2…键的下方也有,而这里是要按键盘的F1,F2…这些键的下方的数字键

所以这里干脆就说成shift+$符号了
同理这个shift+^也是如此

从#位置按shift+$
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后再按shift+^
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
shift+g
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
5 + shift + g
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
gg:快速按两次g
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

2.方向键

这是一个很早很早的老式键盘
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
注意看:这个键盘上面并没有我们独立的↑↓←→方向键
因此把←给到了h键,
↓给到了j键
↑给到了k键
→给到了l键

因此在vim中,我们也可以使用h,j,k,l键来移动光标
那你会说:vim中这么定义有什么用呢?

一方面是历史原因,当时键盘上面还没有独立的↑↓←→方向键
另一方面:就像是打游戏的时候控制角色移动,释放技能等等,当我们完全熟悉了之后
是比居于键盘右侧那狭小的空间当中才能控制方向要高效,舒服很多的

如果我们想要快速在这一行中移动光标呢?
w:按照"单词"在行内进行向右移动
b:按照"单词"在行内进行向前移动

注意:这里的"单词"的识别标准是由vim来定的,而不是指英语中的单词
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
一次w:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
两次w:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
三次w:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具四次w:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
五次w:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
六次w:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
七次w:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
b:也是同样的距离,只不过方向不同

3.复制,粘贴,撤销,剪切,删除快捷键

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我们在第一行执行了yy+p命令
把第一行成功拷贝到了第二行
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们执行4+yy+p
拷贝了第2,3,4,5行并粘贴
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们执行yy+4+p
拷贝当前行,进行4次粘贴
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们执行u
撤销刚才的编辑操作
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们执行ctrl+r
撤销刚才的撤销操作
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们执行5+dd
删除第3,4,5,6,7行
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们执行2+p
可见dd所谓的删除其实就是剪切操作
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
最后经过一顿操作回到最初状态
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

2.底行模式下的快捷键

1.快捷键

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
wq我们之前演示过了,这里就不演示了,后面那个wq!我们放到下面修改sudoers file的时候去演示
下面我们演示一下那个vs 文件名
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我们在底行模式中输入:

vs vs_test.c

按回车键
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们就可以在这个新创建的vs_test.c文件中书写代码
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我ctrl+ww:切换到test.c文件中
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

2.其他操作
1.显示行号

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
取消行号:
set nonu
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

2.进入文件时指定光标位置

vim test.c +n
默认情况下:使用vim进入文件后,光标默认处于上一次退出时所处的位置

而vim test.c +n
这样打开test.c时光标就会处于第n行

比方说我们vim test.c +8
这样我们就处于了第8行
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

3.在底行模式中不退出vim文件的情况下进行其他操作

比方说我正在vim中写着代码
突然我忘了一个库函数具体怎么用了
然后我想查阅一下man手册

以scanf函数为例
我们在底行模式中输入 !man 3 scanf
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们就可以在不退出vim的情况下进行操作,
例如这里的man 3 scanf
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们q退出man手册
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
按任意键继续,然后我们回车,就又回到了我们的文件当中
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
同理,我们也可以直接在底行模式中编译文件,执行可执行程序等等
我们先把那个没写的两个;加上,然后wq
然后再vim test.c 然后底行模式输入gcc test.c
(关于gcc的操作我们下面会介绍的)
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们回车键回去
然后!ls
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们!./a.out
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后成功执行
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

3.vim的其他模式

1.替换模式

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我按了一个shift+` :成功将第4行的printf的p改为了大写,同时光标自动右移
这样方便我们对一行字符快速更改大小写

我直接一直按shift+`:成功将这一行内容都进行了大小写替换

同理,我们回到开始处在重新按一次shift+`.就成功地替换了回来
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
下面我们回到这一行,开始后续操作
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我们按了3+r+w
成功将printf的前三个字母替换为了w
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们输入shift+r 进入替换模式
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们随便输入一些代码
int a = 1;double d=1.0;
成功进行了替换
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们无脑Esc返回命令模式
按下18+x,成功删除了18个字符:

tf("hello vim\n");

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们按下16+shift+x,成功向左删除了16个字符:

1;double d = 1.0

请注意:
向左删除时:光标所在字符不会被删除,而是直接删除光标左侧的那一个字符
向右删除时:光标所在字符会被删除,并且将右边的字符向左挪动一位
(我们可以简单的认为仅仅只是光标右移了一位)
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

2.查找"模式"

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我们在刚才那个位置按下shift+#
高亮了printf,然后我们输入n这个字符,就可以快速跳转到高亮的位置
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
为了证明当前在命令模式下,我们直接输入i,成功进入了插入模式
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

3.批量化注释/去注释操作

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

1.批量化注释

我们先移动到这里,进行后续操作
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我们先ctrl+v
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后按下j,选好要注释的区域
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后shift+i
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后//
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
最后Esc
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

2.批量化去注释

先ctrl+v ,然后j选好区域
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后d,成功删除注释
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

3.使用vim来修改sudoers file文件

前面写的这篇博客:Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉)中提到过:
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
下面我们开始介绍如何把某个用户的用户名添加进sudoers这个配置文件中

首先先切换到root用户,然后进入/etc目录下
找到sudoers文件
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们ll sudoers文件,发现root用户对于这个文件只有r权限

但是我们之前不是提到过root不受权限约束吗?
但是有些情况下,root也是会受到权限约束的

比如对于sudoers文件的修改

我们vim sudoers
找到这里
这里的

Allow root to run any commands anywhere
就是指root可以在任何地方中执行任何命令
这个就是sudoers配置文件中我们需要添加用户的地方

我们系统中有一个zs用户,我现在想要将zs添加到这个sudoers文件中
我们在命令模式下对root那一行执行yy复制命令

然后到下面那几行中进行p粘贴命令
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们进入插入模式将这一行的root用户名改为zs
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后切换为底行模式,输入wq
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们发现root用户无法进行保存并退出,也就是说在这个sudoers 文件中root的权限是会受到限制的
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
那怎么办呢?
再次从命令模式回到底行模式
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
直接wq!
回车退出
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
成功退出
下面我们切换到zs用户来演示一下
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我们先让root回到root的家目录下
然后切换为zs
使用zs执行sudo ls命令
输入zs的密码之后,发现成功执行

然后因为我后续不想让zs处于sudoers文件中
所以我去切换回root用户,
继续修改sudoer文件,删除zs的权限
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后继续切换到zs,让zs执行sudo ls命令
此时zs无法执行sudo命令,因为zs不在sudoers file这个配置文件中

4.vim非正常退出的解决方法

当我们误操作退出了vim之后
比方说这个样子
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
在右边的那个窗口当中我刚刚写完了printf(“hello”)还没来得及写;就因为某种意外直接退出了
比方说我在还没有保存的情况下直接关掉右边这个窗口
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
我输入:确定
然后就只剩下我左边这个窗口了
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我vim test.c
出现了这个样子
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
这是为什么呢?
是因为当我们在vim中异常退出时,vim会自动给我们上一次的编辑结果进行保存
保存到这个.test.c.swp文件中

然后我们只需要这样做就行:
1.先按R/shift+r
进入到上次异常关闭后的文件
然后wq退出这个文件
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
2.然后再vim test.c进入
会发现还是这个样子,然后输入D/shift+d
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
进入到这个文件中,然后继续wq退出
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后再vim test.c,
发现这个文件就恢复正常了
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
其中,这个R:就是让我们能够恢复上次异常退出时所编辑出的结果(通过第一次wq来恢复)
D:就是删除这个vim因为我们异常退出所形成的临时文件(.test.c.swp)

三.gcc/g++

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
在VS中,程序的这4步翻译过程我们一个ctrl+F5就可以完成
体会不到具体的过程
而在Linux中我们是可以体会到具体的程序翻译的过程的

下面我们来在Linux下面看一下具体的程序翻译的过程

我们先新建一个目录gccdir,在这个目录下创建一个code.c文件
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后写入这样的内容
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

1.预处理

gcc -E code.c -o code.i

-E:告诉gcc,编译过程中预处理做完之后就停下来

code.c 要编译的C语言代码

-o code.i:将code.c预处理后的文件名重命名为 code.i

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们用vim 查看code.c和code.i
看一下它们之间的差异

我们在code.i中shift+g 定位到最后一行
发现code.i中上方那一大堆代码其实就是头文件stdio.h中的代码
(也就是说:所谓头文件展开,本质就是在预处理的时候,将头文件的内容拷贝至源文件中)
而且宏定义的M也已经被替换为10了
并且注释也已经删除了
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
还有条件编译呢,
下面我们再来介绍一下条件编译
我之前在一篇博客中C语言预处理及宏和函数的区别与各自优劣点的详解写到过条件编译

这是条件编译的一大用途:防止头文件被重复引用

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

2.条件编译的补充内容

我们再创建一个ifdef_test.c文件
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
这个代码的含义是

如果定义了VERSION1
那么就执行第一个printf语句

如果在没有定义VERSION1的情况下定义了VERSION2
那么就执行第二个printf语句

如果VERSION1和VERSION2都没有定义
那么就执行第三个printf语句

然后我们正常gcc 编译ifdef_test.c文件
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
这里的./a.out就是执行a.out这个可执行程序,我们下面会介绍的
这种正常编译的情况我们很容易理解
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
也就是说:
我们可以通过给编译器传递不同的宏值,来进行对代码的动态裁剪

gcc ifdef_test.c -o mycmd -D VERSION1=1

这里的-o mycmd 就是把生成的可执行文件重命名为mycmd
这个-D 就是我们要介绍的补充内容
这个-D经常跟条件编译结合使用

通常
我们会在这个-D 后面定义宏,
让我们能够做到在编译时选择性地去编译不同的代码

下面我们来看一下这个代码的运行结果
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
可见这个VERSION宏被成功定义了
同理,我们也可以宏定义VERSION2
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
那么这个究竟有什么用呢?
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

3.编译

命令:

gcc -S code.i -o code.s  :这是将上面形成的code.i文件编译为code.s文件

gcc -S code.c -o code.s  :这是直接将code.c文件编译为code.s文件

也就是说gcc跟上-S等等选项是可以跳步的

下面我们来演示一下
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们vim code.s,查看一下这个文件
这个就是code.s,也就是code.c/code.i的汇编代码
其中mov push call pop ret都是汇编指令
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
注意:汇编代码在不同的编译器下的样子是不同的
下面给大家看一下同样的代码在VS2013中的样子
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

4.汇编

gcc -c code.s -o code.o
或者
gcc -c code.i -o code.o
或者
gcc -c code.c -o code.o

下面我们来演示一下
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们vim code.o进入code.o
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
然后我们发现出现了一堆乱码,这是为什么呢?
你不是说汇编阶段是将汇编代码翻译成二进制指令吗?
那为什么给我出现一堆乱码呢?

首先:
code.o文件的确是二进制文件
其次:
vim是一款文本编辑器,只能识别文本文件,无法识别二进制文件
就像是Windows中的记事本,Windows中的记事本是无法识别二进制文件的

给大家演示一下:
就拿我们刚才在VS2013中运行的那个代码的.obj目标文件为例:
我们用记事本打开这个.obj目标文件
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
也是一堆乱码

5.链接

首先我先把已经存在的那个mycmd删除,以防大家误会
其实我也可以不删除,直接让我新生成的这个mycmd去替代曾经的那个mycmd

命令:

gcc code.o -o mycmd
可执行文件名称(这个名称自己可以随便取,这里我取名为mycmd(my command:我的命令))

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

6.gcc的总结

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
那以后都要这么麻烦吗?
其实以后我们直接这样就行,也就是直接把预处理,编译,汇编和链接放到一起执行

gcc code.c -o 可执行文件名称

我先把code.i,code.s,code.o,mycmd,mycmd1都删除
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具

6.gcc和g++的区别与联系

Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
下面我们来演示一下
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
左边是test.c
右边是test.cpp

然后我们先用gcc来分别编译这两个文件
test.c 编译为 mycmd_c
test.cpp 编译为 mycmd_cpp
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
用gcc编译test.c成功,用gcc编译test.cpp失败

下面先把mycmd_c删除
然后我们用g++来编译test.c和test.cpp
Linux基础环境开发工具的使用(yum,vim,gcc,g++),Linux学习之路,linux,vim,yum,gcc/g++,开发工具
用g++编译test.c和test.cpp均成功

以上就是Linux基础环境开发工具的使用(yum,vim,gcc,g++)的全部内容,希望对大家有所帮助!!文章来源地址https://www.toymoban.com/news/detail-735233.html

到了这里,关于Linux基础环境开发工具的使用(yum,vim,gcc,g++)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【linux基础(五)】Linux中的开发工具(上)---yum和vim

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到开通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 理解了Linux基本指令和权限之后 终于开始了与代码相关的工具的使用 想必各位早已听说过vim的大名,这篇文章 将带你深入浅

    2024年02月09日
    浏览(37)
  • 【Linux系列P4】Linux需要什么?编辑器?软件包?一文帮你了解掌握 [yum]&[vim]———基础开发工具篇

    前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向未接触过Linux的老铁,主要内容含 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门!  订阅专栏阅读: YY 的《Linux》系列 ❀❀❀❀❀ 【Linux系列-P1】 Linux环境的搭建 【Linux系列-P2】Linux的基本

    2024年02月06日
    浏览(59)
  • 【Linux环境基础开发工具】编辑器-vim

    vim是一个编辑器,是在Linux下编程的常用工具,如果要学习在Linux下的编程, 那学会使用vim是一个必修课,今天我就来讲解如何使用vim编辑器。 目录 写在前面 什么是vim vim的常用命令 (1)gg:定位光标到第一行第一个位置 (2)shift + g:定位光标到最后一行 (3)n + shift + g:

    2024年02月07日
    浏览(53)
  • 【Linux环境基础开发工具】软件包管理器-yum

    今天我打算介绍如何在Linux环境下载软件, Linux作为一个操作系统,就像windows一样,当然是存在软件的。 目录 写在前面 怎么在Linux环境安装软件 源代码安装 rpm安装包安装 yum安装 如何理解Linux的生态 如何使用yum安装软件 如何更换yum源 总结: 写在最后: 一般来说,Linux下有

    2024年02月08日
    浏览(64)
  • Linux 常用开发工具(yum、vim)

    耐心是一切聪明才智的基础。—— 柏拉图。本章进入到Linux下的一些常用的工具,这些工具能帮助我们去更好的使用Linux操作系统。 话不多说安全带系好,发车啦 (建议电脑观看) 。 附:红色,部分为重点部分;蓝颜色为需要记忆的部分(不是死记硬背哈,多敲);黑色加

    2024年02月07日
    浏览(49)
  • Linux开发工具:yum、vim、gcc/g++、makefile

    在 Linux 下安装软件一共有三种方式: 源代码安装 有很多开源软件的源代码会被作者放在Github/Gitee 等网站上, 可以将这些源代码下载在本地. 通过直接在本地将这些源代码进行编译链接生成可执行程序 . 在嵌入式编程中, 经常用到交叉编译来处理不同平台的适配性. rpm包直接安装

    2024年01月19日
    浏览(46)
  • Linux中的开发工具(yum,vim,gcc/g++,gdb,Makefile,git)

    yum(Yellow dog Updater,Modified)是Linux下非常常用的一种 包管理器 。主要应用在Fedora,RedHat,Centos等发行版上。 和手机上的软件商店类似,我们可以使用 yum 来下载各种我们想要的软件包。使用 yum 时必须联网。 yum 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装

    2024年02月08日
    浏览(44)
  • Linux环境开发工具之vim

    上一期我们已经介绍了软件包管理器yum, 已经可以在linux上查找、安装、卸载软件了,本期我们来介绍一下文本编辑器vim。 什么是vim vim的常见的模式以及切换 vim命令模式常见的操作 vim底行模式常见的操作 解决普通用户无法执行sudo问题 vim配置 vim是一款多模式的文本编辑器

    2024年04月15日
    浏览(32)
  • 【Linux】基础开发工具——yum篇

     在Windows环境下,我们通常会到对应的官网,去下载安装包进行软件的安装,在手机端,我们通常会到应用商店去下载我们需要的软件。那在Linux环境下如何安装软件呢?  源代码安装,即软件的开发者把软件的源代码直接给我们,我们自己对源代码进行编译、安装。源代码

    2024年02月12日
    浏览(46)
  • 【Linux】基础开发工具——vim篇

    前言:  今天给大家分享的工具是 vim 。vim是一款强大的 文本编辑器 ,他有多种编辑模式,所以也叫 多模式编辑器 ,它的前身是vi。vim兼容vi的所有指令,并且在vi的基础上添加了一些新的特性。例如:语法加亮、可视化操作也可以运行在x windows、mac os、windows。  先给大家

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包