首页 > 系统相关 >【Linux】深入Linux:yum包管理与vim编辑器实用攻略

【Linux】深入Linux:yum包管理与vim编辑器实用攻略

时间:2024-12-18 15:27:18浏览次数:6  
标签:文件 Linux 模式 vim yum 软件包

请添加图片描述

在 Linux 系统中,yum 和 vim 是不可或缺的工具,前者用于软件包管理,后者是高效的文本编辑器。本文将为你提供实用的操作技巧和攻略,帮助你轻松掌握这两项核心技能,提高开发和系统管理的效率。

文章目录

一、Linux软件包管理器-yum

如果在Linux下安装软件, 一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。但是这个安装软件方式太麻烦,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过软件包管理器可以很方便的获取到这个编译好的软件包,直接进行安装 。

为了方便进行理解,软件包和软件包管理器看作 “App” 和 “应用商店”

Linux中软件包可能有依赖关系,比如下载这个软件需要某个库配置文件,yum会帮助我们解决软件包存在"依赖关系"的问题。yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat,Centos等发行版上。将yum看成软件下载安装管理的一个客户端(小米应用商店,华为应用商店)

二、Linux系统(Centos)生态

2.1 三种安装软件包的方式

  1. 源代码安装】:非常麻烦,需要自行编译生成可执行程序,同时需要考虑各种不同的环境下是否编译成功和依赖关系的问题

  2. rpm安装】:提前将各种不同环境下的源代码都编译好,形成rpm包(压缩包),可以直接下载rpm进行安装。相对于源代码安装,rpm安装解决了各种不同环境下的编译问题,但是对于依赖关系没有得到解决。需确保满足所有的库和配置文件需求是至关重要的。如果遇到依赖缺失的问题,通常需要手动查找和安装所需的库文件,同时确保相应的配置文件正确设置。

  3. yum安装】会解决上面两个缺陷:各种环境下问题和依赖关系

2.2 社区生态问题

问题】:为什么这个社区中,开发者们将各种环境下的代码编译好,并提供相应的库和服务器配置?还是免费的使用?

回答】:虽然开源项目通常是免费的,但它们也会接受捐赠。这是因为这些开源项目为众多公司提供了服务,如果一个开源项目的社区变得萎缩,可能会影响项目的持续更新,进而让使用该项目的公司感到不安,因此他们可能会选择捐赠以维持项目的活跃性。项目的依赖程度不一,但当客户多、商业模式成熟,依赖性增强时,开源项目就能产生经济效益。

一款优秀的系统需要具备完整的文档、丰富的配置选项、活跃的社区,以及便于问题暴露和解决的能力。同时,它需要有大公司使用,以便从他们的经验中吸取教训,确保社区中能找到有效的问题解答。

系统本身的差异并不显著,关键在于我们为系统所设定的特性和吸引的用户群体,这些因素共同构建了多样化的社区和配套的特定问题及解决方案。因此,选择系统时,我们应重点关注其生态系统和社区活跃度。

三、yum相关操作

在这里插入图片描述

这些开发者将针对各种环境编译的可执行程序部署到CentOS服务器上。当我们执行 yum install xxx 时,系统如何确定从哪台服务器下载软件包?实际上,yum 会根据配置文件(通常位于 /etc/yum.repos.d/)中的仓库地址进行下载。这些配置文件中包含了目标服务器的链接,从而使得系统可以正确地找到和下载所需的软件包。

3.1 搜索软件包

yum list | grep 软件名字

在这里插入图片描述

3.2 安装与卸载软件

  • [sudo / root身份] yum install [-y] XXX
  • [sudo / root身份] yum remove [-y] XXX

注意事项:

  • 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
  • yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
  • 如果 yum 报错, 请自行百度.

3.3 软件源

在这里插入图片描述

这里我们主要讲述两个常见的软件源:基本软件源(base)、扩展软件源(epel)

在这里插入图片描述

yum 会根据配置文件(通常位于 /etc/yum.repos.d/)中的仓库地址进行下载。这些配置文件中包含了目标服务器的链接,从而使得系统可以正确地找到和下载所需的软件包。

在这里插入图片描述

3.4 yum本地配置

由于国内访问国外的网络环境较差,使用默认的 CentOS 官方仓库地址(通常指向国外的服务器)进行软件包下载时,速度可能会比较慢。为了提高下载和安装效率,国内一些知名企业和组织出于特殊需求,建立了官方仓库的镜像,将国外的软件包复制到本地服务器上。这些镜像源可以作为替代源,用户只需将 /etc/yum.repos.d/ 目录下的配置文件中的链接替换为国内镜像的地址,就能加快软件包的下载速度。本质上,这个配置过程就是将软件源中的地址从国外的链接更新为国内的镜像地址。

在这里插入图片描述

在这里插入图片描述

  • wget -O:把远端的链接上的配置文件下载下来,在本地指定的路径下,形成一个CentOS-Base.repo
  • -O:把远端下载下来的文件名更改成CentOS-Base.repo

3.5 查看软件包

通过yum list命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多,这里我们需要使用grep命令只筛选出我们关注的包. 例如 yum list | grep lrzsz 出现结果 lrzsz.x86_64 0.12.20-36.el7 @base

注意事项:

  • 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
  • “x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
  • “el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
  • 最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念

如果你需要在多台机器之间互相拷贝文件,可以使用 scp 命令来实现。如果你想免费获取某个文件而无需账号认证,前提是对方已经公开了下载链接,并搭建了 FTP 服务器或其他公开的文件服务器,只有这样你才能使用 wget 直接下载文件

四、rz|sz指令

该工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.安装完毕之后可以通过拖拽的方式将文件上传过去 。

  • rz -E和拖拽是一样的效果将windows客户端文件下载到Linux上
  • sz -E和拖拽是一样的效果Linux下传递下来到本地

关于 yum 的所有操作必须保证主机(虚拟机)网络畅通,可以通过 ping 指令验证 ping www.baidu.com


五、Linux编辑器-vim

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、mac os、windows ,所以我们重点讲述vim,vim是一款编辑器,定位上跟记事本没啥区别。

既然vim是一款编辑器,那么我们可以通过vim filename.txt打开个不存在文件,达到新建文件的效果。不过建议还是先touch filename.txt创建个文件,通过vim进行在该文件进行书写。

六、vim多种模式

Vim有多种模式,目前掌握先掌握基础的三种:命令模式(command mode)、插入模式(insert mode)和底行模式(last line mode)

当我们使用vim打开文件,默认处于命令模式下,该模式下暂时无法正常输入。我们可以先使用i进行到插入模式,插入模式就是编辑模式,我们可以在其中进行编辑代码的工作,如果需要退出命令模式,点击Ecs进行退出插入模式;如果需要退出该文件,在命令模式下可以 :(shift + ;)进入底行模式,输入wq退出。

命令模式属于核心模式,如果进入到其他模式需要退回到命令模式可以无脑Esc返回。同时插入模式与底行模式不存在相关模式切换的按键。在这里插入图片描述

对于我们平时的编辑行,可以从宏观上应该分为两类:一类是正常输入,一类是我们在进行文本内容进行控制。

  • 插入模式】:编辑模式,相当于用来进行完成基本的输入

  • 命令模式】:允许使用者通过命名来进行文本的编辑控制,将来更多是用于完成复制粘贴和区域选择,删除,大小写转换

  • 底行模式】:用来进行让vim进行包括但是不限于shell进行交互的,可以在底行执行一些命令和wq退出。相当于对于我们的整个软件这个使用情况进行控制,保存退出。

6.1 插入模式

  • 按[i]:切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
  • 按[a]:进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按[o]:进入插入模式后,是插入新的一行,从行首开始输入文字
  • 按[ESC]键:从插入模式切换命令模式
  • 无法从插入模式直接切换到底行模式

6.2 命名模式

当我们vim filename.txt默认处于命名模式**,命令模式主要是通过命令对文件进行编辑控制**,那么首先我们先进入插入模式完成文本编辑,再处于命令模式进行文本编辑。本质就是对文本内容进行修改,不一定需要进入到插入模式下,在命名模式下,几条命令也是可以做到的。

复制相关命令

  • [yy] :复制当前行
  • [n + yy] :连续复制n行
  • [p] :粘贴光标的下一行
  • [n + p] :表示把指定内容粘连n次

撤销上一次操作

  • [u] :如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回
    复。
    [ctrl + r] : 撤销的恢复
  • [n+dd] :剪切/删除指定行、连续的多行

在执行过程中会存在提示信息

在这里插入图片描述

移动光标

  • [$(shift + 4)] :将光标定位到当前的结尾
  • [ ^(shift + 6) ] :将光标定位到当前的开头
  • [gg ] :将光标定位到整个文本的最开头
  • [G(shift + g)] :将光标定位到整个文本的最后一行
  • [n+G(n + shift + g)] :将光标定位到整个文本任意一行
  • [w] :按照单词为单位进行光标后移
  • [b] :按照单词为单位进行光标前移
  • [ctrl + w] :支持在多文件进行切换
  • [[h] 左[j]下 [k]上 [l]右]:虽然vim可以直接用键盘上的光标来上下左右移动,但是正规的vim是用小写英文字母hjkl。由于键盘刚出来,没有方向键。软件需要有兼容性,不知道你使用啥键盘。可以带n进行操作。
  • [~(shift+`)] :字符大小写快速切换
  • [n+x] :删除光标后续的一个字符,可以一次性删除n个 (范围在一行内)
  • [n+X(n+shift+x)] :删除光标之前的一个字符,可以一次性删除n个 (范围在一行内)
  • [n+r] :对于光标指定的位置,进行一个字符的替换,可以一次替换多个
  • [R(shift+r)] :进入替换模式,直接对文本替换

6.3 底行模式

在使用末行模式之前,请记住先按[ESC]键确定您已经处于正常模式,再按[:]冒号即可进入底行模式 。底层模式是偏功能的,插入模式是偏笔记。

列出行号

  • [set nu] : 输入[set nu] 后,会在文件中的每一行前面列出行号。

跳到文件中的某一行

  • [#] :[#]号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15再回车,就会跳到文章的第15行。

查找字符

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

保存文本与退出vim

  • [w] : 在冒号输入字母[w]就可以将文件保存
  • [q]:按[q]就是退出,如果无法离开vim,可以在[q]后跟一个[!]强制离开vim
  • [wq]:一般建议离开时,搭配[wq]一起使用,这样在退出的时候还可以保存文件
  • [!]:强制

执行相关命令

  • [!command] :不退出vim,可以进行shell命令执行,常用函数查看(!man -n functionname)

多文件展开】 (支持文件拷贝)

  • [vs filename]:分屏,多文件多文件操作
  • [ctrl w]:切换左右文件光标位置(在命名模式下支持)

在这里插入图片描述

多种模式指令集-小结

在这里插入图片描述

七、vim产生临时文件问题

7.1 Ctrl + Z操作生成临时文件

场景:在命名模式下,我们可以使用ZZ(shift + zz)进行保存退出,但是很容易使用到Ctrl z就会导致文件卡死,vim程序暂停了,所以一般不推荐使用ZZ指令进行退出。如果不小心Ctrl + Z,再打开test.c会出现这个问题。

在这里插入图片描述

表示把vim这个程序stop暂停,把vim转为后端任务。如果通过ps ajx | grep vim可以看见test.c文件还在运行。然后kill -9 1958将程序杀死,vim这个程序就没有了

在这里插入图片描述

同时也可以通过job命令查看任务,目前我们是为了解决这问题,这些东西还没有学习到,先把问题解决了。

未解决问题?

当重新使用vim打开文件时,发现还是报错,难道我们刚刚没有解决这问题吗?我们通过提示可以理解到,存在临时文件。我们现在来分析下问题出现在那里呢?

首先,Ctrl z实际上是你的vim程序把这文件打开,该文件又没有退出来,但你第二次打开,系统就会提示存在临时文件。Linux存在默认情况,只允许一个程序被打开,跟在windows下记事本一样。

其次,如果你直接删除文件,万一这个程序存在其他用户的数据,你直接将他删除了,vim你是怎么回事啊!所以vim会在自己异常奔溃或者自己被删除时候,他会为我们在当前默认目录下形成一个临时文件,如果对该文件有需要可以进行恢复,既然会在当前默认目录下形成临时文件,那么为什么看不见呢?每次进入老是有个死鬼提示,建议直接删除了?

在这里插入图片描述

我们可以通过ls -la指令看见这个临时文件,然后rm临时文件,当然你想恢复就恢复,想删除就删除。

我们只不过Ctrl z一下就搞出这么多问题,所以对于退出vim需要采取正确的措施进行退出。

7.1 断网未保存产生临时文件

第一种情况】:这个文件被打开,但是没有进行任何修改,也是说这个文件内容是最新的。

  • 出现断网情况不受到影响,没有出现临时文件,下次打开文件还是正常打开

第二种情况】:对文件进行了编辑,但是我不小心断网或者关闭服务器

  • 这里就会生成临时文件,当出现提示信息,我们可以D删除或者R恢复临时文件。

对于系统相关处理】:

  • D(删除):本质就是rm将临时文件删除,保证用户数据的安全性,不再有系统提示。
  • R(恢复):执行恢复操作后,系统会将临时文件中数据恢复到主文件中,但是临时文件本身依然存在或者打开,系统还会出现提示,提醒用户编译过程中还有未处理的临时文件

八、vim代码中注释

如果我们需要对vim文件中代码进行注释,可以在插入模式添加//表示注释,但是这样子会影响效率。

8.1 批量化注释

首先Ctrl v进入视图模式,hjki区域选择(一般是j)或者shift g向下全部选中和n shift g,然后I(shif + i),//,两次ESC

在这里插入图片描述

  • i】:表示进入插入模式,在当前光标所在的位置直接开始插入文本。
  • I】:表示进入插入模式,并将光标移动到当前行的行首,然后在行首插入文本。

8.2 批量化去注释

首先首先Ctrl v进入视图模式,hjki区域选择(要选中需要去注释区域),包含且包含//,d

在这里插入图片描述

九、普通用户无法使用sudo指令提权

sudo 命令默认情况下只能 root 用户才能使用。如果需要让普通用户也能使用 sudo 命令,必须在 etc/sudoers 文件中进行配置

在这里插入图片描述

由于etc目录拥有者和所属组都是root,而且其他用户没有修改权限,那么无法对该目录进删除,修改,新添等操作。如果需要在etc/sudoers 配置文件添加用户信息,只能去麻烦下root。
在这里插入图片描述

如果出现这种情况,在底行模式下使用!wq强制保存退出,表达你的决心。

在这里插入图片描述

配置中常见问题】:出现permission denied情况。不是文件是空的,是人家文件不让你读取,需要使用root账号

十、vim配置

vim配置并不是很重要,重要是上面相关指令集操作使用。vim就是Linux系统上的一个二进制可执行程序,在执行前会调用若干配置文件,其中最典型文件就是.vimrc。通常在在目录 /etc/下存在vimrc文件,该文件属于系统中公共的vim配置文件,对所用用户都生效。

10.1 个性化配置

Linux一款多用户的系统,每个用户有属于自己的家目录,这也有意味着每个用户的主目录下,都可以自己建立私有的配置文件, 每个.vimrc文件一般存在于你当前的家目录下,如果你当前家目录下不存在.vimrc文件,可以新建该文件touch .vimrc,我这边普通用户家目录下没有该文件哦,所以我新建了一个。

在你当前的工作目录下,看看有没有配置文件,如果存在配置文件就会读取,如果没有该配置文件就不会读取配置文件

使用实例

我们知道set nu就是生成行号的命名,将该指令配置在配置文件.vimrc中,使用vim打开一个文件,

在这里插入图片描述

在这里插入图片描述

最后咱们vim也就是一开始的时候写一些小代码,后边真正写代码的时候还是会用vscode的,我们可以学习一下用vscode链接远程服务器。该文章由""一只漫步前行的羊"大佬提供,若有侵权,麻烦告知:Vscode——通过SSH连接服务器


在这里插入图片描述

以上就是本篇文章的所有内容,在此感谢大家的观看!这里是店小二呀Linux笔记,希望对你在学习Linux语言旅途中有所帮助!

标签:文件,Linux,模式,vim,yum,软件包
From: https://blog.csdn.net/2302_79177254/article/details/143160472

相关文章

  • linux免密登录和ssh服务及ssh客户端工具安装
    一、ssh服务和客户端安装yumlist|grepssh1.ssh服务安装yuminstall-yopenssh-server就是安装sshd服务2.ssh客户端工具安装yuminstall-yopenssh-clients就是安装ssh工具二、查看ssh服务systemctlstatussshd如果不是running,就启动一下systemctlstartsshd......
  • Linux 环境搭建(云服务器和XShell)
    文章目录一、Linux背景介绍1、发展史1.1、UNIX发展的历史1.2、Linux发展历史2、开源3、官网4、企业应用现状5、发行版本DebianUbuntu红帽企业级LinuxCentOS(已经停止维护了)FedoraKaliLinux......二、搭建Linux环境1、购买云服务器2、小结:三、使用XShell远......
  • 【Linux】如何在Linux系统中批量添加打印机呢?
    一、背景知识在Linux系统中,打印机通常被视为一种输出设备,用于将计算机中的文档或图像打印到纸张上。与Windows系统类似,Linux系统也需要一系列的目录和配置文件来管理打印机,以及一个守护进程来处理打印作业。在办公用的操作系统领域,Windows常年傲视群雄。而近年来,政、企等单位操作......
  • 在 UTM 上安装 Alpine Linux 的步骤
     步骤1:下载AlpineLinux镜像访问AlpineLinux的官方网站:https://alpinelinux.org/downloads/。下载适用于虚拟机的x86_64或aarch64架构的AlpineISO镜像。步骤2:创建虚拟机打开UTM应用,点击右上角的"+"按钮来创建一个新的虚拟机。选择虚拟机类型(例如......
  • 腾讯通升级版,兼容Linux国产系统,消息与RTX互联互通
    一、腾讯通RTX继续使用面临的挑战自从腾讯通RTX停止更新并下架官网后,企业用户在实际使用中遇到了种种难题,直接影响了日常的沟通与协作效率:●无法适配国产系统与移动端:腾讯通RTX只能运行于Windows和Mac系统,对基于Linux内核的国产操作系统(如银河麒麟、统信UOS)以及移动端设备不支......
  • linux指定特定用户执行命令
    1、编写一个shell脚本[root@server_ipshell]#cattest.sh#!/bin/bashpingwww.baidu.com2、使用www用户去启动这个脚本#nohupsudo-H-uwwwbash-c/home/shell/test.sh&3、你可以看到后台的test.sh程序有两个用户在执行,把root那个进程杀掉就可以了,即使不杀......
  • Linux 网页管理工具cockpit使用
    无意间在网上看到一款使用比较方便的Linux网页管理工具,感觉很强大,对Linux新手很有用。平时centos用的比较多,一下以centos7为例,简单列出部署过程。Cockpit包通常在EPEL仓库中提供,需要先下载epel源yuminstall-yepel-release.noarchyumcleanallyummakecachefastyumin......
  • 常见的Linux系统(以Ubuntu为例)中安装Redis的步骤
    一、安装准备更新系统软件包列表在安装Redis之前,先更新系统的软件包列表,以确保可以获取最新版本的Redis及其依赖项。在终端中执行以下命令:sudoapt-getupdate这个命令会从软件源服务器获取最新的软件包信息,包括软件包的版本、依赖关系等更新内容。安装编译工具和依......
  • 常见的Linux系统下安装分布式消息队列Kafka的详细步骤
    一、安装前提条件Java环境安装Kafka是用Scala编写的,运行在Java虚拟机(JVM)上,所以需要先安装Java。可以通过以下命令检查系统是否已安装Java:java-version如果没有安装,可以根据操作系统的不同,从Oracle官方网站(https://www.oracle.com/java/technologies/javase-downloads.ht......
  • Linux安装Anaconda
    1、下载Anaconda安装脚本这里我们需要在官网上查找自己需要的版本,地址链接在下面:https://repo.anaconda.com/archive/下载之后,将文件移动到服务器上2、安装Anaconda执行命令:chmod755Anaconda3-2020.02-Linux-x86_64.sh赋予脚本执行权限执行命令:./Anaconda3-2020.......