首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Linux《基础开发工具(上)》

  • 25-03-07 21:22
  • 3888
  • 6155
blog.csdn.net

在之前的篇章当中我们已经了解了Linux当中基本的指令以及相关的知识,那么接下来在本篇当中就开始学基本的开发工具,在此我们一共要了解6大开发工具,在此将这些工具的学习分为上中下篇,在本篇当中我们首先要来学习的是yun以及vim,一起加油吧!!!


1.软件包管理器 

1.1 安装软件方式

在windows当中我们都知道要下载一个软件可以在对应的应用商店下载也可以在浏览器直接下载,那么在Linux当中要下载相应的软件又该进行什么样的操作呢?

其实在Linux当中要下载软件可以使用以下的三种方式
1.源代码安装
2.rmp包安装
3.软件包管理器安装

以上的方式当中最原始的方式就是直接使用下载到程序的源代码,再进行编译得到可执行程序。但是我们一般是不使用这种方式来进行软件的安装的,这是因为这样实在是太麻烦了,并且在安装的过程当中如果出现源代码的丢失就会使得软件的安装过程出现错误,这时我们目前的能力还无法发现错误就会使得对应的软件无法安装。

因此为了解决使用源代码在进行软件的安装时会出现一系列的问题,在此就引入了rmp包安装的方式,rmp将要安装的源代码打包成为一个为一个完整的包,要安装软件就只需要安装rmp包即可。但是在软件进行安装时其实除了要安装对应的rmp包之外还要解决依赖的问题,也就是在使用rmp包安装的时候还要将安装的包与对应的库进行链接。

以上的方式相比直接使用源代码进行安装的方式简单了许多,但是要自行解决依赖的问题对与我们来说还是较为繁琐,于是有些⼈把⼀些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在⼀个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装。

注:在此使用包管理器进行安装的方式可以理解为在安卓的应用商店或者是在苹果当中的app store当中进行软件的安装

1.2 认识软件包管理器

在Linux当中不同的OS当中不同的包管理器是不同的,在我们使用的Centos和Ubnutu当中的软件包管理器分别是yum和apt,当前我们使用的OS是Centos,因此接下来介绍的就是如何使用yum进行软件的安装,但是在了解yum的使用之前我们先要来了解一些关于操作系统生态的相关问题和概念,这对我们认识Linux当中为什么有不同的OS有很大的助力。

其实在我们使用yum等包管理器进行安装的时候,在我们的云服务器上其实是会通过相关的配置文件查找到远程的包管理服务器,之后找出你所需要的软件包,再下载返回。

在此就有问题了,那就是我们使用yum过程当中远程的软件包服务器当中的软件包是谁写的呢?写这些软件包的工程师为什么要免费的将这些软件包进行免费开发给用户呢?

要解答以上的问题就需要了解操作系统的生态问题了,我们知道Linux是一款开源的操作系统,并且我们还知道在不同商业版本的Linux操作系统当中其实这些系统对应的系统内核其实是相同的,这时不同的人群会选择不同的操作系统就由于不同商业版本的OS当中就会有者以下不同的生态位

当对应的开发人员将一款新的软件开发出来之后将源代码开源之后就需要Linux当中系统的的工程师将对应的软件的源代码进行编译到其对应的系统当中,之后再将其对应的软件包和其他环境包上线到该系统的软件包服务器当中,之后该系统下用户要下载该软件就可以使用yum安装了。

那么此时问题又来,那就是这些系统的工程师为什么要主动的将开发者的源代码编译上线到系统的软件包服务器上,他们这样做是为了什么呢,感觉在这个过程当中相应的工程师好像也无法得到相关的利益啊。其实形成这些现象的根本原因是由于Linux是一款开源的操作系统,这就使得Centos、Ubuntu这些系统在系统内核上都是相同的,那么为了吸引更多的用户就需要跟进市场上新出现的软件,否则用户之前在使用的系统上无法及时的使用到新的软件,这就会使得这鞋用户转向到其他的OS,这不就造成用户的流失了吗。

我们知道不同的系统在一开始的时候针对的用户群体是不同的,就例如Centos注重企业的使用、Ubuntu注重学生群体,当时如果OS无法及时的将目标用户所需的软件及时的上线,而其他的OS上线了这些群体所需的软件,这就会使得这些用户流失到其他的OS当中。

因此通过以上的描述可以看出这些系统的工程师是为什么要主动的将开发者新开发出的软件快速的编译上线到软件的包服务器上,这就是为了避免OS用户的流失,当然有一些的工程师确实没有功利心就是为了能让更多的人使用到最新的软件,这当然也是有的。

那么此时你可能就会有疑惑了,那就是这些Linux的OS免费的将软件编译上线到软件包服务器上这个过程当中也是要损耗人力、物力的。那么在将软件上线的过程当中是无法盈利的,那么这些OS是如何保持运转的呢?毕竟软件包服务器也是需要购买的,这些都是要花费资金的。 

确实这是因为Linux开源的特性,Linux相比其他的系统就会更加的安全,就会使得更多的大公司使用。当它们使用的操作系统出现资金不足时,这些大公司就会对它们使用的操作系统进行“援助”,此时对应的操作系统就有了资金来保持正常的运转。

 1.3 镜像

在了解了操作系统的生态问题之后接下来就来了解镜像的相关知识

其实我们使用的Centos等操作系统都是国外的公司创建的,那么这就使得原来的yum当中的配置文件保存的软件源保存的是国外的软件包管理器,由于“墙”的原因这就使得我们无法正常到的查找到软件的包管理器,为了解决这一问题,国内的一些公司或者高校就在他们自己的云服务器上将国外的软件管理器的内容拷贝到他们的的云服务器上,再将来用户的包管理器的配置文件当中的软件源.conf进行替换。以上的过程就是包管理器的“镜像”。

以下是使用DeepSeek生成的一些国内常用的Linux软件安装源的官方链接

1. **阿里云官方镜像站**  
   - 官方链接:
阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
   - 提供CentOS、Ubuntu、Debian等多种Linux发行版的镜像,支持快速下载和更新软件包。

2. **清华大学开源软件镜像站**  
   - 官方链接:
清华大学开源软件镜像站 | Tsinghua Open Source Mirror
   - 提供多种Linux发行版镜像,以及Python、Perl、Ruby等编程语言的扩展包。

3. **中国科学技术大学开源镜像站**  
   - 官方链接:
USTC Open Source Software Mirror
   - 提供多种Linux发行版镜像及常用开发工具,支持快速获取软件包。

4. **北京交通大学自由与开源软件镜像站**  
   - 官方链接:
首页 - 北京交通大学自由与开源软件镜像站
   - 提供多种Linux发行版镜像及相关软件仓库。

5. **中国科学院软件研究所镜像站(ISCAS)**  
   - 官方链接:
欢迎访问 ISCAS 开源镜像站
   - 提供多种Linux发行版、编程语言和开发工具的镜像。

6. **上海交通大学开源镜像站**  
   - 官方链接:
Index of /
   - 提供丰富的Linux软件资源,包括多种发行版镜像和软件仓库。

7. **网易开源镜像站**  
   - 官方链接:
欢迎访问网易开源镜像站
   - 提供多种Linux发行版镜像及相关软件仓库,支持便捷的搜索功能。

8. **搜狐开源镜像站**  
   - 官方链接:
Index of /
   - 提供CentOS、Ubuntu等发行版的镜像下载。

9. **华为云镜像站**  
   - 官方链接:
https://mirrors.huaweicloud.com/ 
   - 提供多种Linux发行版镜像及开发工具支持。

10. **腾讯云镜像站**  
    - 官方链接:
腾讯软件源
    - 提供多种Linux发行版镜像及常用软件仓库。

这些镜像站可以帮助您快速下载和更新Linux软件包,提升安装效率。

1.5 yum

在以上我们认识了包管理器的相关的知识之后接下来就来了解yum是如何使用的。但在此之前先要来了解yum要如何进行安装,正常情况之下我们的云服务器当中系统是不会自带yum的,这需要我们自行安装。

安装需要使用以下的指令:

  1. # Centos
  2. $ sudo yum install -y lrzsz

若你使用的是Ubuntu那么就需要安装的是apt,对应的安装指令如下所示:

  1. # Ubuntu
  2. $ sudo apt install -y lrzsz

当我们使用以上的指令进行yum的安装就会发现会出现以下的问题,这其实是由于在Linux当中安装yum这些包管理器是需要使用root或者进行指令提权的,因此在普通用户下要进行yum的安装就需要在以上指令之前加上sudo 

 

 

注:在Linux当中的软件,root安装了,普通用户也是能使用的,因此软件只要安装一次即可

在此要卸载yum/apt需要使用到以下的指令

  1. # Centos
  2. sudo yum remove [-y] lrzsz
  3. # Ubuntu
  4. sudo apt remove [-y] lrzsz

安装了yum之后接下来我们就可以来了解如何使用yum来安装、卸载软件了

在此使用以下的指令就可以将罗列出当前⼀共有哪些软件包

yum list 

但由于包的数目可能非常之多, 这里我们需要使用以下的指令,grep 命令只筛选出我们关注的包

yun list | grep XXX

之后要安装对应的软件就使用以下的指令

yum install [-y] XXX

要卸载相应的软件就使用以下的指令 

yum remove [-y] XXX

其实在Linux当中是有很多好玩的指令的,通过yum/apt等安装之后就可以使用了,例如在Centos当中只要使用yum安装sl之后再使用sl就会出现一个火车的动图

yum intall [-y] sl

 

 

注:如果你还想了解更多好玩的指令可以自己查阅 

 

2. 编辑器Vim

在了解了yum之后接下来我们就月嫂了解在Linux当中的编辑器,其实在Linux当中的编辑器其实是有很多的,不过最经典的是接下来我们要学习的vim。在此了解了vim的基本使用之后我们就可以在Linux当中编写代码了,并且使用熟悉之后会比之前的效率要高许多

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以运⾏于x window、 mac os、 windows。

2.1 见一见vim

在此当我们要使用vim来编辑指定文件的内容时之需要使用以下的指令即可

vim [文件名]

在此如果vim之后的文件是不存在的,那么就会自动的在当前的路径之下创建对应的文件

 

注:在此你的vim打开和我的vim可能是不同的,这时因为vim没有进行配置时默认就是和记事本一样的,只要进行配置之后就可以显示行号;高亮等。

以上我们就写了一个简单的C语言的代码,那么要将test1.c内的代码能运行起来,那么就需要使用到gcc,在此gcc的详细知识在下一篇当中会进行讲解,在此你只需要先知道我们写的代码要通过gcc编译之后才能形成可执行程序

使用了gcc之后默认就会形成a.out

 

之后运行a.out就可以得到原来test.c输出的结果

 

2.2 vim的多模式

在以上我们已经见到了vim的使用,那么接下来就来了解如何使用vim

2.1 命令模式

光标移动

当我们使用vin打开了我们创建了一个文件指之后,接下来使用vim打开之后这时你会发现你点键盘上的大多数按键都没有反应,其实这是当打开vim时默认所处的是命令模式,此时只能进行相关的命令操作

在此vim的命令模式当中一般进行的是光标的移动,以及代码片段的删除、复制、粘贴 。

 那么接下来就来了解命令模式当中的各个命令

要将文件当中的光标运移动到文本的开头就使用以下的命令

gg

如果是要移动到指定的行就使用 n+gg ,在此n表示的是要光标移动的目标行数

 

要将文件当中的光标移动到文本的末尾就使用以下的命令

shift+gg

 以上命令其实就是GG,按住键盘的shift键之后再点击gg

和使用gg类似使用GG是也可以将光标移动到文本当中的指定行,只需要在使用GG之前输入指定的行号即可

除了以上将文本的光标移动到文本的开头、末尾、指定行之外,有时当一行的代码很长时使用方向键移动就很慢,那么此时就可以使用以下的命令

  1. shift+4=$ 将光标移动到行尾
  2. shift+6=^ 将光标移动到行首

 

如果要将光标进行上下左右的移动,就需要使用到h、j、k、i,在此h表示左;i表示右;j表示下;k表示上

在此你可能就会又疑惑了,在键盘当中不是有对应的方向键吗,那为什么还要使用这些字符键来表示方向?

这其实是因为vim是很早就出现了,而在那时键盘还是像如下所示的,可以看到是没有方向键的,就是使用hjkl这四个键来表示方向键,虽然现在的键盘都是有方向键的,但是在一些情况下方向键可能会出现无法使用的情况,因此在此我们还是要学习hjkl表示方向。

在行内光标的移动过程当中为了提高效率,以下的命令可以实现行内光标以单词为单位的前后移动

n+w/b 

以上的单词不是我之前认识的英语单词而是由vim内部判断的有效单词

其他命令

以上我们了解了关于文本当中光标移动的相关命令,那么接下来来了解其他的命令

当我们要将文本当中的一段文本进行复制时就可以使用到以下的指令

n+yy

在此n表示的是从当前行开始要复制文本行的行数

例如以下示例:

如果要将第7行复制就需要将光标移动到第7行之后再使用yy

要将复制之后的文本进行粘贴就需要使用以下的命令

n+p

在此n表示的是要将之前复制的内容粘贴的份数,并且张贴过程是将粘贴到当前行的下一行

例如以下示例:

点击10p之后就将之前复制的第7行粘贴10遍

如果是要将一部分的文本进行裁剪或者是删除就可以使用以下的命令

n+dd

 以上n表示的是要裁剪的从当前行开始的行数

例如以下示例

要将从13行开始的文本删除5行就可以使用5dd

当要将文本当中的快速的进行大小写的切换就需要使用以下的指令

shift+`=~

 例如以下示例

要将文本当中的第7行字母全部切换为大写就只需要一直按住shift之后再点击`即可

 

要进行命令模式当中行内的删除就需要使用以下的指令

n+x/X

在此使用x是可以将当前光标之后的一个字符进行删除,X是可以将当前光标之前的一个字符进行删除。n表示的是要进行删除字符的个数

在一些情况下可能只是要将文本进行替换,那么此时就可以使用以下的命令

n+r

不过一般以上都是在进行小范围的文本替换,如果要进行较大文本的替换就可以使用shift+r进入到替换模式

如果要对之前进行的命令进行撤销那么该如何做呢,在此只需要使用以下的指令

u

只要在命令模式当中输入u即可,但是如果要对u进行撤销呢?

此时就需要使用ctrl+r

因此在vim当中u和ctrl+r可以相互进行撤销

注:只要不退出vim就可以进行撤销,但是只要退出了vim就无法将上一次的操作进行撤销 

2.2 底行模式

在vim当中底行模式可以进行文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

当我们进入vim时默认进入的示命令模式,如果要进入底行模式就需要使用以下指令

shift+;

以上其实就是在命令模式当中输入 : 即可进入底行模式,接下来就可以进行一系列的操作 

要从底行模式退回只需要点击键盘的ESC键即可

如果要使得文本显示含行号只需要在底行模式当中输入set nu即可,要去掉行号输入 set nonu

在此要搜索文本当中的字符只需要输入 /XXX ,XXX表示的就是要进行查询的字符,之后光标就会移动到该字符的位置

 

在此要退出vim只需要在底行模式当中输入q,如果要保存修改的文本并退出输入的是wq,但是在一些情况下即使是root也无法退出此时就需要输入wq!,在此!表示的就是强制退出。

在一些情况下我们可能需要退出vim再进行一些操作,但是退出vim之后再进入这一操作就显的较为繁琐,因此为了解决这一问题其实在vim的底行模式当中其实可以可以直接在要输入的命令之前加上!,这样就可以在不退出vim的情况下执行对应的命令

例如以下示例:
当前在vim下要使用ls指令,只需要打开底行模式之后输入!ls即可

在一些情况写我们写的程序可能是包含多文件的,那么进行该程序代码的编写就要在几个文件之间的切换效率就很低下,因此在vim提供以下的命令来进行多文件的编写效率的提升

vs [文件名]

在此vs是可以在打开了两个文件之后再打开文件的,只需要进行使用vs [文件名]  

例如以下示例:

如果当前我们处在test1.c下还要再打开test.h那么就可以使用vs test.h ,这样就可以将两个文件都显示出来

如果要将光标切换到另一个文件时只需要使用以下的命令,此时当前文件的光标就会移动到另一个文件当中

CTRL+ww

2.3 插入模式 

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

要进入插入模式需要在键盘当中点击i,按“i”进入插入模式后是从光标当前位置开始输入文件。如果要从当前光标的下以行进行输入需要点击键盘当中的a。若要插入新的一行,从行首开始输入文字需要在键盘当中输入o。

在此插入模式就不进行讲解,,之后我们进行代码的编写都是要在该模式当中进行

在插入模式其实也是可以不用退回命令模式再保存退出的,有一种快速保存退出的方式就是直接使用SHIFT+zz

2.4 补充实用操作

在以上我们已经了解了基本的vim的使用方式,接下来了解了解几个vim当中的实用命令操作,了解之后在使用时能大大提到我们的效率

1.批量化注释

在我们使用vim进行代码的编写时可以会出现要将一大段的代码进行注释,当然我们是可以进入插入模式之后再一行一行的注释,但是这样的效率太低下了,接下来就来了解更高效的方式

在此只要先使用CTRL+v进入视图模式之后再使用 hjkl选定要进行注释的行 再使用shift+i进入到插入模式,再点击ESC就可以实现批量化的注释

例如以下示例: 

2.批量化去注释

如果要批量化的去除注释,只需要先使用CTRL+v进入视图模式之后接下来再使用hjkl选定要删除注释的行,再点击键盘当中的d就可以实现批量化注释的删除

例如以下示例:

 

3.进行文本内的替换

如果要将文本内的字符替换为指定的字符,那么就可以在底行模式当中使用到以下的指令

%s/[要被替换的字符]/[要替换的字符]/g

例如以下示例,要将文本当中的world 替换为linux就可以使用以上的命令

4.使光标跳转指定行

其实在打开使用vim打开指定的文件时光标默认是停在之前退出的位置,那么如果要使得光标跳转到指定的文本的行就需要在使用vim打开文件时加上要跳转的行号

vim [文件名] +[行号]

例如以下示例:

5.快速调用历史命令 

在之前我们就了解过可以使用上下键和ctrl+r来调用历史的命令,但是确实还有更快速的方式就是直接使用!外加原来命令的首个字母

 2.5 vim模式关系图

以上我们了解的命令模式、底行模式、插入模式、视图模式、替换模式之间的关系图如下所示

因此当我们不知道所处的是什么模式下就只需要无脑的ESC这样肯定能退回命令模式

注:其实除了以上地5大模式之外,vim内还有其他的模式,只不过这5大模式已经完全能满足我们的日常使用了

2.6 vim配置

之前你打开vim时会发现vim就和普通的记事本一样,这是因为没有进行文件的配置,那么接下来就来了解该如何进行配置

配置文件的位置
• 在目录 /etc/ 下⾯,有个名为vimrc的⽂件,这是系统中公共的vim配置文件,对所有用用户都有
效。
• 而在每个用户的主目录下,都可以自己建⽴私有的配置⽂件,命名为:“.vimrc”。例如,/root
⽬录下,通常已经存在⼀个.vimrc⽂件,如果不存在,则创建之。
• 切换用户成为⾃⼰执⾏ su ,进⼊自己的主工作目录,执⾏ cd ~
• 打开自己⽬录下的.vimrc⽂件,执⾏ vim .vimrc
常⽤配置选项,用来测试
• 设置语法⾼亮: syntax on
• 显示行号: set nu
• 设置缩进的空格数为4: set shiftwidth=4

但是这时你玩可以会觉得自己配置太麻烦了,那么有什么办法能一键完成配置的方法呢?

在此你可以将以下的脚本链接粘贴到命令行当中,注意在使用该脚本时最好在普通用户下,不要在root当中使用

注:以下只能在Centos当中使用

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

输入之后接下来只需要输入root密码即可自动完成vim的配置 ,接下来就是耐心的等待

 

以上配置默认的缩进是两个字符的,之前我们使用的vs当中默认缩进是4个字符,因此你如果要把缩进修改为4个字符就需要进行以下的操作

使用链接安装了之后就会发现出现了许多的插件 

 

接下来就是使用vim打开.vimrc ,再在底行当中输入/2点击回车,将以下的2都替换为4即可

 

如果你想了解更多的关于vim的配置可以看以下的文章

Vim 从入门到精通

3.解决sudo无法使用问题

在了解了vim的使用之后接下来我们就可以来解决之前在使用sudo时无法使用的问题,其实之前就说过是由于没有将普通用户写道相关的配置文件当中,那么接下来就来讲解如何将配置修改指定的配置文件

在此通过ls就可以看到以下的文件只有root有读权限,因此要修改该文件只有使用超级用户才能执行

 因此接下来就需要切换到超级用户在使用vim打开指定的文件

之后在100行左右就可以看到相关的配置信息,此时就将要写入的用户的用户名和root类似之后也带上ALL=(ALL)       ALL写入到该文件另起一行当中即可 

 

此时使用wq保存退出是会出现以下的警告的,这是因为该配置文件即使是root正常情况下也是不能修改的

 

此时就需要使用wq!来强制保存退出

完成以上的操作之后接下来就可以正常地使用sudo了

 

 

以上就是本篇的全部内容了,接下来还会继续带来Linux当中其他基础的开发工具,未完待续……

注:本文转载自blog.csdn.net的mljy.的文章"https://blog.csdn.net/2303_81098358/article/details/145761084"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

120
运维
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top