Linux学习--第五天--vim使用、rpm命令

时间:2020-12-06 20:44:42

vim使用

三种模式:

  • 编辑模式
  • 插入模式
  • 命令模式
命令 作用
a 在光标字符后插入
A 在光标行尾插入
i 在光标字符前插入
I 在光标行首插入
o 在光标下插入新行
O 在光标上插入新行
:set nu 设置行号
:set nonu 取消行号
gg 到第一行
G 到最后一行
nG 到第n行
x 删除光标所在处的字符
nx 删除光标所在处后的共n个字符
dd 删除当前行
dG 删除所在行到文件末尾的内容
D 删除光标所在地方到行尾内容
:n1,n2d 删除指定范围的行
yy 复制当前行
nyy 复制当前行后的n行,包括了当前行
ndd 剪切当前行以下的n行,包括当前行
p 粘帖至当前光标的行下
P 粘帖至当前光标的行上
r 替换光标处文字
R 从光标处开始替换文字
u 撤销上一步
:%s/old/new/g 全文的old替换成new
:n1,n2s/old/new/g 在指定范围内把old替换成new
:w 保存修改
:w filename 另存为指定文件
:wq 保存退出
ZZ 保存退出
:q! 不保存退出
:wq! 保存退出(没有权限的时候,文件所有者和root可使用)
:r 文件名 导入文件内容到光标位置
!命令 执行命令,然后按任意键继续
:r !命令 将命令结果插入光标位置
map ^P :wq 设置快捷键 保存退出,其中^P是按住ctrl和v和p
:n1,n2s/^/#/g 批量注释
:n1,n2s/^//g 批量删除注释
:n1,n2s/^/\/\//g 批量注释
:ab mail 7555555@qq.com 设置简称

软件包管理

软件包种类:

  1. 源码包(脚本安装包)
  2. 二进制包(rpm包)

二进制包:编译过后的软件包,01代码,看不到源代码。
源码包安装慢且容易出错。但是源码包安装的软件效率高稳定,据统计比二进制包块5%。
源码包卸载方便,直接删除目录。

rpm: redhat package manage
rpm包全名:httpd-2.2.14-15.el6.centos.i686.rpm

  • httpd:包名
  • 2.2.14:版本
  • 15:发行次数
  • el6.centos:适合的linux平台
  • i686:适合的硬件平台
  • rpm:后缀名

noarch 所有平台都可以
依赖:普通依赖,环形依赖,模块依赖。(模块依赖查询网址 rpmfind.net)

命令 作用
rpm -ivh 包全名 -i:安装 -v:显示详细信息 -h:显示进度
rpm -Uvh 包全名 -U:更新
rpm -e 包名 erase:卸载
rpm –nodeps 不检查依赖性,生产环境下禁止使用
rpm -q 包名 query:查看是否安装rpm
rpm -qa 查看所有安装的包
rpm -qi 包名 info:显示安装包详细信息
rpm -ql 包名 ls:查询包中文件安装位置
rpm -qlp 包全名 (-p:未安装的软件,后跟包全名)可查询未安装软件的预安装位置,因为设置好安装在哪儿了
rpm -qf 系统文件名 查询系统文件属于那个rpm包
rpm -qR 包名 查询软件包的依赖性
rpm -pRq 包全名 安装过的系统会查找默认路径,没装过的软件必须进入对应目录并且输入包全名
rpm -V 包名 验证包是否被修改过

rpm安装命令的时候尽量不要指定安装路径,因为这样会导致可能系统操作时候找不到软件。
rpm 可以安装,升级,卸载,查看。yum不能查看。

rpm -V 包名 描述
S 文件大小是否变化
M 文件类型或权限是否变化
5 md5值是否变化
D 代码是否有变化
L 文件路径是否变化
U 文件的属主是否变化
G 属组是否变化
T 文件修改时间是否变化

文件类型

  • c:配置文
  • d:普通文档
  • g:鬼文件,很少见,即该文件不应该被这个rpm包包含
  • l:授权文件
  • r:描述文件

误删文件的处理

cd /root                 #进入家目录,不是必要的
rpm -qf /bin/ls #查询ls命令属于哪个rpm包
mv /bin/ls /tmp/ #模拟误删命令
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.cl6.i686.rpm | cpio -idv ./bin/ls
#将光盘中的rpm包中的ls命令提取到当前当前目录/bin/ls下面 ,在centos 7中测试无效,后来将coreutils强制安装覆盖得以解决 --force
cp /root/bin/ls /bin/ #修复完成

\是命令换行符号。
删除ls后可以用dir代替