Linux工具(一)

      前言:Linux是一个开源的操作系统,它拥有庞大而活跃的开发社区,为用户提供了丰富多样的工具和应用程序。这些工具不仅适用于系统管理员和开发人员,也适用于普通用户,可以帮助他们完成各种任务,从简单的文件管理到复杂的系统配置。从本文开始,我们将系列学习五个Linux的入门开发工具,本期我们先来介绍两个工具:yum和vim工具。

目录

1.Linux 软件包管理器 yum

尝试安装和卸载 sl 

拓展yum源的安装

2.Linux开发工具

Linux编辑器-vim使用

vim的基本概念

vim的基本操作

vim正常模式命令集(在命令模式下)

vim底行模式命令集

代码注释

vim的多文件同时编辑

vim的配置


1.Linux 软件包管理器 yum

Linux一般如何安装一款软件

一般的,Linux下安装一款软件有两种方式,分别是源代码安装和rpm包安装,

源代码安装:Linux下大多数工具基本上都是开源的,这些代码一般都需要我们采用自动化脚本进行编译,在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序,自己编译安装,出了错还需要自己处理,如果源代码存在移植性问题一般不好解决。

rpm包安装:本质上就是把可执行文件拷贝到指定的文件目录中去,但是我们不可能一直都知道我们需要将程序安装到哪个目录下合适。

yum一键安装:上面的两种方式比较麻烦太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装。

软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系.

        我们在移动设备上安装的app,在还没有被安装之前,是在服务器里面存放着的,我们用应用商店下载安装的本质,实质上是应用商店作为客户端,软件的服务器将某些软件上架到手机厂商的服务器,应用商店通过访问手机厂商的服务器下载软件,也是因为有了手机厂商这一中间渠道,也就净化了安装软件的服务,手机厂商要想保证自己手机的服务品质,就必须对这些想要上架到手机厂商的服务器的安装包进行甄选,所以,从应用商店下载的东西,一般的品质都是比较好的。

yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上. 这里我购买的服务器是Centos版本。

尝试安装和卸载 sl 

      我们来简单尝试一下去安装和卸载常见的命令,一般的,我们的安装工作都在root用户下进行,root用户下安装的工具,其余的普通用户也都可以使用。下面我们以命令 sl 为例来说明,首先,我们需要找到我们对应的软件列表,类似于查询,

可以找到我们想安装的命令的名称叫做sl,.后面的是命令后缀

输入sl,一辆正在行驶的小火车就出来喽~~

类似于这种好玩的命令,我们可以在网上搜到很多,感兴趣可以安装过来和同学装一下。

       那么如何卸载这个命令,我们就可以直接使用 yum remove 命令来实现,对应的选择y即可卸载,当然,如果不需要询问是否要删除的话,我们可以直接采用 yum remove -y [工具名] 来实现,其他的一些询问需求也同样适应。

拓展yum源的安装

       yum源其实就是连接Linux服务器和软件提供者服务器的链接,yum中需要存在一定的文件来保存软件的下载地址,需要从对应的地址下载过来到自己的Linux的服务器上,但是大多数软件的服务器都在国外,国外访问不太稳定,所以,我们一般可以将我们的yum源下载并切换到国内的镜像的yum源,这样我们访问就能更稳定,一般不影响使用的话可以不换,这里就不再赘述。

      对与一些很新的软件或者一些其他的工具,本地的基础yum源可能不会及时的更新,所以,就需要我们安装对应的yum源的扩展版本,同时,我们可以通过以下命令来查看对应的yum源的列表

ls /etc/yum.repos.d/

这个epel.repo 就是我们对应的yum源的拓展软件源,这里我已经安装了,这里给出安装命令,安装之后可以再次查看对应的列表看看是否有了epel.repos

yum install -y epel-release

        关于安装哪些软件这个要看个人的需求,我们只需要掌握安装方法即可,就像刚买来的手机,不可能一下子就把所有的app全部安装完成,我们只是在平时使用的过程中产生了需求才会让我们取安装一些应用。 

2.Linux开发工具

Linux编辑器-vim使用

vim的基本概念

        vim其实就是一款多模式的文本编辑器,类似于我们windows中的一些代码编辑软件,比如vscode等,vim的多模式模式我们需要掌握的模式一般只需要三种即可,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

插入模式(Insert mode)

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

末行模式(last line mode)

      文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+ : 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入 :help vim-modes

三者之间的切换需要注意,其中略有一些细节需要注意:

vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

当然,如果vim 一个不存在的文件,也就相当于直接创建了文件, 

键盘输入i,进入插入模式,此时我们就能编辑我们想要的代码了。

退出vim及保存文件,在[正常模式]下,按一下shift+ : 键进入底行模式,例如:

: w (保存当前文件)

: wq (输入「wq」,存盘并退出vim)

: q! (输入q!,不存盘强制退出vim)

:set nu/nonu  设置代码  显示/不显示   行号

vim正常模式命令集(在命令模式下)

gg :移动光标到开头处

(n+)shift + g :定位光标到任意一行,n可以省略,省略就是定位到最后一行

shift + 4(非数字盘的那个4,上面带有 $ 符号):将光标定位到特定一行的结尾

shift + 6(^) : 将光标定位到特定一行的开头

vim可以直接用键盘上的光标来上下左右移动,但正规的vim是在命令模式下用小写英文字母 h、j、k、 l,分别控制光标左、下、上、右移一格(早期键盘没有方向键,Linux延续了老式键盘的键位)

w: 以单词为单位向前移动到单词的开头,如果不是单词则还是一个字符一个字符移动

b:以单词为单位向后移动到单词的最后一位的下一位

e:以单词为单位移动到单词的最后一位

(n) yy:将光标所在的行进行整行内容复制

(n) p:粘贴内容到当前行,n表示内容一次性粘贴n行

u: 撤销上一个操作

ctrl +r :撤销上一个撤销操作

(n) dd :剪切功能,将当前光标处的一行(往下n行),删除并复制到剪切板中,p即可赋值

shift + `(esc正下方的那个键) : 按住即可将光标所在行从头至尾的字符进行小写转大写,大写转小写。

(n) r :将从当前光标所在位置向后的n个位置的字符都覆盖式替换为接下来我们自己手动输入的字符

shift +r  (相当于切换成大写模式输入 R):切换为replace模式,直接根据键盘接下来输入的字符从当前光标开始覆盖式替换字符

(n) x :向光标后删除一个(n个)字符

vim底行模式命令集

set nu /nonu:显示/不显示 行号

shift + 3 (带#的3)  : 检索当前光标所在区域的全部位置的单词,之后我们一直按 n 可以快速遍历这些位置的对应的同名单词,方便查找

/  :  先按 / 键,再输入想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按  n 会往后寻找到您要的关键字为止

shift + ? : 先按键shift + ? ,再输入想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会往前寻找到您要的关键字为止。

?和 / 查找单词有什么不一样呢?

  1. 使用“/” 进行正向查找:按下“/”键,然后输入要查找的单词,按下回车键。vim会从当前光标位置开始往后查找匹配的单词。按下“n”键可定位到下一个匹配项,按下“n”键可定位到前一个匹配项。

  2. 使用“?”进行反向查找:按下“?”键,然后输入要查找的单词,按下回车键。vim会从当前光标位置开始往前查找匹配的单词。按下“n”键可定位到上一个匹配项,按下“n”键可定位到后一个匹配项。

shift +w :将文件保存起来

shift +q (!) :退出,如果无法离开vim,可以在后跟一个 ! 强制离开vim。

shift +wq : 退出并保存文件

代码注释

批量化注释

      在命令模式下,将光标定位到我们想要注释的行上,按ctrl + v 进入视图模式,接着按我们的 j和k两个键(按上下的方向键也行)选到我们想要注释的末行,接着按 shift + i 进入插入模式,输入我们的注释符号 “// ”,然后按esc,我们就可以将我们选中的行进行批量注释了。

批量化删除注释

      同样的,我们还是 在命令模式下,将光标定位到我们想要注释的行上,按ctrl + v 进入视图模式,接着按我们的 j和k两个键(按上下的方向键也行)选到我们想要注释的末行,这里需要注意,删除注释必须注释符号的两列 ‘/’ 符号都选中,才能一次性删除注释,用我们的h和l 键配合向左右选中即可, 然后再按一下d即可批量化删除注释。

下面,我们就可以更新一下vim的模式图了:

vim的多文件同时编辑

     我们在一些编译器中编写代码的时候,能够同时编写多个文件,比如头文件和源文件等,同样的,我们在vim中也可以实现这个功能,我们可以在vim编辑一个软件的同时,进入底行模式,输入命令 vs [新文件名],这样我们就可以同时分屏创建两个文件,同时进行编写。

多任务如何切换?

     文件虽然有多个,但是光标只有一个,一切以光标为准,我们在编辑一个文件时,想要跳转到另一个文件,一种最简单的方式,就是按 ctrl +ww ,从当前文件切换到另一个文件。

vim的配置

基础配置

     vim在启动的时候,会自动扫描用户家目录下的 .vimrc文件,让该文件内部的内容生效,vim配置的原理,核心就是向 .vimrc文件中添加更多的个性化的配置选项,vim也可能会需要各种插件,以满足除了一些基础功能之外的其他的个性化功能。

自动化部署配置(C++)

     这里,我们尽量在普通用户下,目前只支持 Centos7 x86_64版本,我们在命令行中输入以下命令:

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

接着拿到我们的root用户的密码,输入密码以继续安装。

如果中途出现信任列表的问题,我们需要在root用户下,打开文件

vim  /etc/sudoers

找到第100行左右(不同的文件可能会有差异),看到类似下方的模块:

 

      进入插入模式找到对应的信任列表添加自己的用户名再返回安装即可,注意别忘了添加用户之后先进入底行模式保存再退出。

安装完成,按提示命令输入即可配置成功。

效果图:

这个配置,在写代码的时候自动缩进是两个字符,如果需要改的话,我们可以直接cd到home目录,在目录下面找到一个叫 .vim的文件,

然后 vim .vimrc ,接着直接搜索2,将2改成4,然后保存退出即可。

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

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

相关文章

宝塔面板日志和缓存占用磁盘空间很大,如何清理?

服务器使用的宝塔面板,最近发现服务器的“系统盘”快爆满了,点面板上日志管理都要收费,我也不是很懂服务器的运维,使用ai进行询问,得到了解决: /var/log 日志目录 运行下面的命令查找是哪些目录占用空间很…

嵌入式Linux驱动开发(I2C专题)(七)

使用GPIO操作I2C设备_IMX6ULL 参考资料: Linux文档 Linux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yamlLinux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txt Linux驱动源码 Linux-5.4\drivers\i2c\busses\i2c-gpio.cLinux-4.9.88\driv…

【SpringMVC】文件上传与下载、JREBEL使用

目录 一、引言 二、文件的上传 1、单文件上传 1.1、数据表准备 1.2、添加依赖 1.3、配置文件 1.4、编写表单 1.5、编写controller层 2、多文件上传 2.1、编写form表单 2.2、编写controller层 2.3、测试 三、文件下载 四、JREBEL使用 1、下载注册 2、离线设置 一…

Java增强for循环(学习笔记)

Java增强for循环 主要用于数组或者集合的增强型for循环。 格式: for(声明语句:表达式){ 代码句子 } 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元…

Python 变量作用域

视频版教程 Python3零基础7天入门实战视频教程 在程序中定义一个变量时,这个变量是有作用范围的,变量的作用范围被称为它的作用域。根据定义变量的位置,变量分为两种。 局部变量。在函数中定义的变量,包括参数,都被称…

王道考研操作系统

王道考研操作系统 计算机系统概述操作系统的概念操作系统的特征操作系统的发展历程操作系统内核中断和异常![在这里插入图片描述](https://img-blog.csdnimg.cn/162452b4c60144e0bd500e180127c447.png)系统调用操作系统结构虚拟机错题 进程与线程进程控制进程通信线程和多线程模…

jvm中对象创建、内存布局以及访问定位

对象创建 Java语言层面,创建对象通常(例外:复制、反序列化)仅仅是一个new关键字即可,而在虚拟机中,对象(限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过…

【直播预约中】 腾讯大数据 x StarRocks|构建新一代实时湖仓

随着信息时代的兴起,数据已成为推动业务决策和创新的核心要素;结构化、半结构化等多种类型的数据呈现爆炸式增长,如何高效处理和分析海量数据已经成为关键挑战,结合传统数仓与数据湖优势的湖仓一体(Lakehouse&#xff…

解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL)

解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL) 一、问题描述二、问题解决2.1 创建.wslconfig文件2.2 重启wsl2 一、问题描述 安装完WSL2后,又安装了Docker,使用了一段时间,发现电脑变卡,进一步查看…

【VUE异常】el-popconfirm失效,@confirm事件不生效,点击没有任何反应,刷新页面才能点击

el-popconfirm失效,confirm事件不生效,点击没有任何反应,刷新页面才能点击 一、背景描述二、原因分析三、解决方案3.1 方案一:使用onConfirm3.2 方案二:confirm与onConfirm同时使用3.3 方案三:el-popconfir…

【用unity实现100个游戏之12】unity制作一个俯视角2DRPG《类星露谷物语》资源收集游戏demo

文章目录 前言加快编辑器运行速度素材(1)场景人物(2)工具 一、人物移动和动画切换二、走路灰尘粒子效果探究实现 三、树木排序设计方法一方法二 四、绘制拿工具的角色动画五、砍树实现六、存储拾取物品引入Unity 的可序列化字典类 七、实现靠近收获物品自动吸附八、树木被砍掉的…

【详细教程hexo博客搭建】1、从零开始搭建一个能用的博客

1、开始 2.环境与工具准备 本教程主要面对的是Windows用户 操作系统:Windows10NodeGitHexo文本编辑器(强烈推荐VSCODE)GitHub 帐号一个域名(强烈推荐买个域名)云服务器(可选) 3.Node的安装 打开Node官网&#xff0…

Error: error:0308010C:digital envelope routines::unsupported

文章目录 1, 问题背景2.解决方法13.解决方法2将 React 脚本升级到 5 以上版本 3.参考资料 1, 问题背景 最近在升级我之前的一个网站的过程中,由于使用了高版本的nodejs v18.0.0报错如下 (undefined) assets/js/styles.1dbb3634.js from Terser Error: error:03080…

LeetCode: 4. Median of Two Sorted Arrays

LeetCode - The Worlds Leading Online Programming Learning Platform 题目大意 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m n))。 你可以假设 nums1 和 nums2 不会同时为空。 …

爆破shadow文件密码脚本(完成版)

在之前的博客Python爆破shadow文件密码脚本(简化版)中我们做了简化版的爆破shadow文件密码的python脚本,接下来在之前代码的基础上改进: import crypt shadow_line"root:$y$j9T$uEgezfJhn7Ov5naU8bzZt.$9qIqkWYObaXajS5iLDA…

Java 时间范围

前端使用Element-ui 时间范围组件 后端注意在Vo里面时间设置String类型不要设置Date类型 XMl组件字段映射成功性

Linux知识点 -- 网络基础(二)-- 应用层

Linux知识点 – 网络基础(二)-- 应用层 文章目录 Linux知识点 -- 网络基础(二)-- 应用层一、使用协议来实现一个网络版的计算器1.自定义协议2.守护进程3.使用json来完成序列化 二、HTTP协议1.概念2.HTTP协议请求和响应的报文格式3…

2023/9/18 -- C++/QT

作业 完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两…

WebGL 视图矩阵、模型视图矩阵

目录 立方体由三角形构成 视点和视线 视点、观察目标点和上方向 视点: 观察目标点: 上方向: 在WebGL中,观察者的默认状态应该是这样的: 视图矩阵程序(LookAtTriangles.js) 实际上&…

仅做笔记用:Stable Diffusion 通过 ControlNet 扩展图片 / 扩图

发觉之前的 Outpainting 脚本效果仍旧不是很理想。这里又找了一下有没有效果更好的途径来扩图。于是就找到了通过 ControlNet 的方式来实现效果更好的扩图。这里临时记录一下在 Stable Diffusion 怎么使用 ControlNet 来扩展图片。 下载 control_v11p_sd15_inpaint_fp16.safet…