首页 > 系统相关 >Linux:开发工具(1)

Linux:开发工具(1)

时间:2024-08-16 08:57:21浏览次数:18  
标签:模式 vim 开发工具 yum Linux 软件 安装 光标

一、软件包管理器yum

1.1 Linux下安装软件的方式

1、源代码安装(直接给你源码,你去进行编译——对用户要求太高!)

        但是这样的话,就不光是源码,还需要把别人的一些相关编译环境配置也得搞过来,比如说我这个代码是用C语言写的,那么我们就需要C语言相关的编译器和库。对使用者来说太麻烦了!

2、rpm安装(直接给你已经编译好的软件包——解决了环境问题,但解决不了安装依赖)

     安装依赖就是,我们使用这个软件的前提需要安装一些前置软件,而我们在安装这些前置软件的时候,我们得需要知道在哪下载,即使知道了,可能该软件还有很多不同的版本,而一些版本可能会因为太新或者太老而不适合在当前的环境下使用,这些对用户的要求太高了!!(再举个例子,就好比我们的目的是吃饭,但是我们在吃饭之前,还要准备碗、准备勺子…… 太麻烦了)

3、yum安装(解决了安装源、安装版本、安装依赖等问题——对使用者友好)

     就相当于我们不仅仅有了编译好的软件包,通过把一些有依赖关系的软件都放进去,这样用户在下载的时候,就直接无脑下载即可,什么都不需要操心。对使用者的要求降低!!! 这就有点像我们在windows下的应用商店里面下载一样,只要我们下载了就一定可以直接去使用!!

 1.2 Linux软件生态

      所以软件包,就是有些人把一些需要用到的软件提前编译打包好,放在一个服务器上(即软件包管理器,他们的关系就好比APP和应用商店的关系),其实每个软件都内置有一个下载链接,当用户点击的时候会自动跳转过去下载安装,然后客户就可以正常使用! 

     而yum(Yellow dog Updater, Modified)是Linux下非常常用的一种软件包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.

 1.2.1 操作系统的选型(生态的重要性)

         举个例子,假如你所在的公司需要对操作系统选型,需要广泛应用到公司的业务中,派你去调研,你该怎么去调研呢???

         无论是软件还是操作系统,他存在目的就是对应目标群体的需求!!我们此时的目标群体是职业程序员,而需求必然是希望这个操作系统能够更好地帮助我们解决各种各样的问题!!

以下是我们需要考虑的问题:(通过这些问题体现出了生态的重要性

1、操作系统的来源是否足够多,足够官方,是否有人维护。

       公司的服务器啊,机器啊可能都需要统一用这个操作系统,那么我们肯定需要足够的数量,并且希望这个操作系统是认可度比较高的,有人定期去维护的。

2、对应的版本是否是一个稳定的版本。

      版本可能会太老或者太新,太老的可能功能不太齐全,跟不上潮流,而太新的可能还在测试中,问题比较多,所以应该选择一个公认的稳定的版本。

3、是否有成熟、活跃的社区和网站。

    成熟的网站和社区能够帮助我们反应一些问题,同时在上面可能能够搜索到一些问题比较成熟的解决方案。

4、成熟的开发文档介绍、使用说明。

    使用操作系统必然要学习他的不同功能,比如说一些命令、一些接口、一些重要的开发使用说明……这些越详细越能够帮助我们快速上手使用这款操作系统。

5、其他:比如说价格低,或者是某些大公司也在使用……

1.2.2 客户端怎么知道软件去哪下载

  通过上图我们可以知道,客户只需要通过应用商店找到要下载的软件,然后就会通过下载地址向网络发送下载需求,然后到官方yum源中去下载!!而这些资源都是由一些组织或者个人提供的。

1.2.3 开源不代表免费

1、开源是一种商业战略(当一个东西影响力足够大的时候,就越不会有人希望他消失!)

        因为是免费的,所以使用的人越来越多,市场占有率更高,用户产生依赖之后就会害怕他消失。比方说我是一个大公司一直在使用这款操作系统,但是这个操作系统的维护资金可能不足了,而一旦瘫痪就会造成损失,所以会成为推动者进行资助,而当越来越多的大公司使用之后,就会有更多资助。

2、 开源有时候也挺贵的。

     我们既然使用了相关的操作系统,那么必然要有人去维护,维护就需要花钱,大公司捐赠的其实最后也是通过产品转移给广大客户,就比如我们在买笔记本的时候,其实已经默认为操作系统买过单了。

1.2.4 我怎么知道要安装什么软件

      我们平时买一部新手机的时候,我们会知道要取安装抖音、安装微信……这其实是因为我们对手机的使用比较了解,知道下载哪些软件能够满足我们的需求,而比如说我们的爷爷奶奶不会使用手机,是因为他们对手机不够了解。

     所以我们想了解在Linux下应该去安装什么软件,就应该去拥抱他、了解他,根据我们的需求去搜索和学习

1.3 yum的使用

1.3.1 yum源

     一般Linux操作系统,默认配置的都是yum源是国外的,所以有可能你的yum源访问会比较慢,所以后期也可以去替换yum源文件(一般的厂商已经替换过了)

 命令:ls /etc/yum.repos.d/ -l   (默认有的是官方yum源)

而后期我们也可以添加一些扩展yum源。 

1.3.2 演示rzsz安装

这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.

1、yum 的所有操作必须保证主机(虚拟机)网络畅通

可以通过 ping 指令验证:

ping www.baidu.com

 2、查看软件包(yum list )

       通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只 筛选出我们关注的包. 例如:

yum list | grep lrzsz

(1)软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.

(2)"x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包. 选择包时要和系统匹配. "el7" 表示操作系统发行版的版本.

(3)"el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6.

(4)base 表示的是 "软件源" 的名称, 类似于 "小米应用商店", "华为应用商店" 这样的概念.

3、软件安装

安装命令:sudo yum install lrzsz

注意事项:

(1)安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.

(2)yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外 一个软件, yum会报错.

(3)如果 yum 报错, 请自行百度.

 4、使用软件

rz:文件从windows——> Linux

sz:文件从Linux——>windows

 5、软件卸载

 安装命令:sudo yum remove lrzsz

无论是安装还是卸载,都会询问你是否确定,如果你不希望他询问,可以加一个-y 

1.3.3 一些好玩的软件(可以自己查)

sl

cowsay 

 二、Linux开发工具vim

 vim是Linux下常用的一款多模式的文本编辑器(可以用他来写代码),每个Linux账户都独有一个vim编辑器。

 2.1 vim的三种常用模式

创建vim文件:vim 文件名   (如果该文件没有创建,必须保存后才会创建出来)

vim最常用的三种模式:命令模式(command mode)、底行模式(last line mode)、插入模式(insert mode)

1、命令模式

每次打开vim编辑器,默认进入的就是命令行模式

  • 命令行模式下无法在打开的文件里插入任何数据,只能执行对应的指令

 2、底行模式

底行模式由命令模式进入:     输入:(即shift+;) 

:是提示符,表示当前处于底行模式

从底行模式退出,按Esc键即可。且退出到命令模式

3、插入模式

 插入模式由命令模式进入:    输入‘i’ 

INSERT是提示符,表示当前处于插入模式

只有在插入模式下才可以对打开的文件进行写操作,即编写程序

 从插入模式退出,按Esc键即可。且退出到命令模式

4、三种模式的相互转换

2.2 vim的相关配置方法

1、在没有进行任何配置的情况下,Linux默认的vim编辑器界面并不美观,且缺少很多功能

  • 界面太过简单,可以说是简陋
  • 编写程序时没有基本的自动缩进、高亮、自动补齐等许多Windos编译器都有的功能,使得用起来极度不方便

2、.vimrc文件用来配置用户所属的vim编辑器 

 root在他的家目录下默认有,但是普通用户需要自己在家目录下创建

配置方法1:直接向.vimrc文件写入指定内容(上网查),从而让vim编辑器具备某种指定的功能

set nu:设置行号 

 配置方法2:安装插件

        如果想要一条条的向.vimrc文件输入各种指令最终实现自己预想的美观的vim编辑器,这个过程肯定是费时且费力的。所以最好的方法就是去找一些比较好的插件。 

VimForCpp: 快速将vim打造成c++ IDE (gitee.com)

 注意:

1、不要在root下执行!!

2、只支持 Centos7 x86_64

3、一个用户一个vim配置文件,相互之间不会影响

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

安装完成后: source ~/.bashrc (重新执行刚刚修改的文档)

 

设置缩进的空格数为4: set shiftwidth=4 (打开.vimrc进行修改)

以下为我们插件包,我们可以将他隐藏起来 

 2.3 vim常用模式的基本操作

2.3.1 命令模式

1、快速跳动光标

  • gg:将光标快速移动到文本的开始位置(第一个字符)
  • Gshift + g:将光标快速移动到文本的结束位置(最后一个字符)
  • $shift + 4:将光标快速移动到所在行的最右侧
  • ^shift + 6:将光标快速移动到所在行的最左侧
  • nG即n + shift + g:将光标快速移动到任意行

 2、移动光标

可以用小键盘的⬆、⬇、⬅、➡将光标移动到对应的位置。

但是在Linux中,更推荐用h, j, k, l这四个字母来移动光标(因为早期没有上下左右键)

  • h:即将光标向左移动一个字符
  • j:即将光标向下移动一个字符
  • k:即将光标向上移用一个字符
  • l:即将光标向右移动一个字符

 记忆方法:h和l分别为左右,j为jump往下跳,k为king高高在上。

3、复制/粘贴/剪切/删除

  • (n)yy:复制当前(n)行
  • (n)p:在光标所在行的下面粘贴(n行)
  • (n)dd:剪切、删除当前所在的(n)行

4、撤回/取消撤回

  • u:取消上一步执行的操作
  • Ctrl + r:取消上一次的撤回操作

5、字符的处理 

  • (n)~即n+shift+1:将光标后面的(n个)字符大小写转换

  • (n)r 输入:将光标后面的(n个)字符全部替换为输入的字符

  • R即shift + r:进入替换模式,此时光标所在的字符被替换为输入的字符

  • (n)x:删除光标所在(n个)字符(向后删除)
  • (n)X即n+shift+x:删除光标所在(n个)字符(向前删除)

 6、批量化(去)注释

批量化注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被注释的区域
  3. 第三步:shift + i
  4. 第四步://
  5. 第五步:Esc

批量化去注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被去注释的区域
  3. 第三步:d

7、多文件

  1. 第一步:vs filename(不退出vim情况下打开更多文件)底行模式中打开更多的文件
  2. 第二步:ctrl+ww 窗口光标切换 (光标在哪一个窗口,就在哪一个窗口进行操作)

2.3.2 底行模式

1、保存与退出

  • q(!):(强制)退出
  • w(!):(强制)保存
  • wq(!):(强制)保存并推出

2、不退出vim的情况下执行shell命令

! 命令

3、新建一个窗口(或打开另一个文件)

vs filename

4、搜索关键字

/ 关键字 

2.3.3 处理vim打开文件报错的问题

如果我们在用vim编辑器处理文件时错误的退出当前的编辑(例如直接关闭云服务器或者虚拟机),那么再次用vim打开相同的文件时,就会出现如下报错信息:

我们按如下的步骤解决:

  • 第一步:选择R(ecover)选项,即输入字符e,之后会进入vim编辑器,直接进入底行模式正常退出即可
  • 第二步:继续用vim打开该文件,此时同样会弹出相同的报错信息,这次选择(D)elele it选项,即输入字符d,之后就会进入vim编辑器,此时问题已经得到解决,可以正常进行编写代码了。

 2.4 sudo白名单的设置

      新建的普通用户是默认使用不了sudo的,因为需要root不信任你 

我们想让一个普通用户可以使用sudo的指令,就需要将他添加到白名单里 (举个例子,你是学校的保安,你知道张三跟校长关系很好,而且他跟你打过招呼,所以你就会把张三加到自己的白名单,一看到他啥也不问就让他进学校,而你知道李四经常破坏学校公物,所以你会把李四加到自己的黑名单,以后一看到他啥也不问就赶走他,而处在这两个名单之外的人,就需要具体询问一下)

步骤:

1、必须切换到root用户!   su root

2、打开白名单文件  vim /etc/sudoers

3、找到白名单并将名字加上去 

4、wq!强制退出保存

 最后我们用sudo创建的文件是root为拥有者,我们的修改就成功了!!

标签:模式,vim,开发工具,yum,Linux,软件,安装,光标
From: https://blog.csdn.net/weixin_51142926/article/details/140547874

相关文章

  • Linux打包命令tar极简示例_2
    只解压tar包中的某个文件这是tar包:只解压a.txt:上边的例子不大理想,再来一个tar包里带目录的:再弄个gzip压缩过的吧:......
  • 在Windows下启用Hyper-V以及安装Linux子系统
    文章目录一、启用Hyper-V二、安装Linux子系统三、开启Linux子系统适用于Linux的Windows子系统(WSL)是Windows的一项功能,可用于在Windows计算机上运行Linux环境,而无需单独的虚拟机或双引导。WSL旨在为希望同时使用Windows和Linux的开发人员提供无缝......
  • 详解Linux命令--ssh
    ssh命令是Linux中最常用的命令之一,用于通过安全的Shell协议远程登录和管理其他计算机。本文将详细介绍ssh命令的用法,并给出具体的示例。1.基本语法ssh的基本语法如下:ssh[options][user@]hostname[command][options]:可选参数,用于控制SSH会话行为。[user@]hostname:......
  • 详解Linux命令--目录
    Linux是一个功能强大的操作系统,适用于从个人计算机到超级计算机的多种平台。对于初学者来说,掌握基本的命令行操作是必不可少的技能之一。本文列举常用命令,并给出最最基础的使用示例,并附上详细介绍的连接。文件和目录管理1.cd(ChangeDirectory)用途:改变当前工作目录。......
  • Linux--内核驱动框架(以字符设备驱动为例)
    下面将介绍一个简单的Linux内核驱动程序(部分),用于处理一个假设的字符设备(鼠标、键盘、串口、LED...),具体介绍如下:1头文件导入#include<linux/fs.h>//用于声明file_operations结构体和其他文件系统相关函数。#include<linux/module.h>//用于声明module_i......
  • 北京某大厂Linux系统管理和Shell脚本笔试题
    1.写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1)删除所有空行;(2)在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB#创建一个测试文件[root@node1~]#echo-e"Hello\nWorld\nThisisatest\n\nAnotherline\n\nLastline">/tmp/in......
  • Linux驱动入门实验班——SR04超声波模块驱动(附百问网视频链接)
    目录一、工作原理1.触发信号2.回响信号二、接口图​三、编写思路1.构造file_operations结构体2.实现函数,填充结构体3.编写入口函数4.编写中断处理函数5.编写定时器超时函数6.编写出口函数7.声明入口、出口函数以及协议 四、应用程序五、注意事项:六、源码驱动......
  • Linux vmstat命令基本使用
    目录vmstat命令介绍vmstat各个参数的含义procsmemoryswapiosystemcpuvmstat命令使用实例虚拟内存相关知识总结通过vmstat来识别CPU瓶颈:解决CPU瓶颈的办法如下:通过vmstat识别CPU满负荷:通过vmstat识别内存瓶颈:解决内存瓶颈的办法如下:vmstat命令介绍vmstat主要是用来检测虚拟内存的......
  • linux xxx is not in the sudoers file. This incident will be reported.
    前言linux报错:xxxisnotinthesudoersfile.Thisincidentwillbereported.这意味着用户xxx没有在sudoers文件中被授权使用sudo命令。解决su切换到root用户,报错:su:Authenticationfailure使用su-root命令,切换登录root用户成功。su:默认情况下,su命......
  • Linux线程
    一、线程的基本操作pthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*start_routine)(void*),void*arg) :此函数用于创建新线程。thread 用于存储新创建线程的标识符,attr 可指定线程属性,start_routine 是线程执行的函数指针,arg 为传递给线程执行......