四、Vim(文本编辑器)常用操作
1、Vim工作模式
2、插入命令
命令 | 作用 |
a | 在光标所在字符后插入 |
i (字母i) | 在光标所在字符前插入 |
o(字母o) | 在光标下插入新行 |
A | 在光标所在行尾插入 |
I (大写字母I) | 在光标所在行首插入 |
O (大写字母O) | 在光标上插入新行 |
3、定位命令
命令 | 作用 |
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg | 到第一行 |
G | 到最后一行 |
nG | 到第n行 |
:n | 到第n行 |
命令 | 作用 |
$ | 移动至行尾 |
0(零) | 移动至行首 |
4、删除命令
命令 | 作用 |
x | 删除光标所在处字符 |
nx | 删除光标所在处后n个字符 |
dd | 删除光标所在行,ndd删除n行 |
dG | 删除光标所在行到文件末尾内容 |
D | 删除光标所在处到行尾内容 |
:n1,n2d | 删除指定范围的行 |
5、替换和取消命令
命令 | 作用 |
r | 取代光标所在处字符 |
R | 从光标所在处开始替换字符,按ESC结束 |
u | 取消上一步操作 |
6、搜索和搜索替换命令
命令 | 作用 |
/string | 搜索指定字符串(搜索时忽略大小写:set ic) |
n | 搜索指定字符串的下一个出席位置 |
:%s/old/new/g | 全文替换指定字符串 |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
7、保存和退出命令
命令 | 作用 |
:w | 保存修改 |
:w new_filename | 另存为指定文件 |
:wq | 保存修改并退出 |
ZZ | 快捷键,保存修改并退出 |
:q! | 不保存修改退出 |
:wq! | 保存修改并退出(文件所有者和root可以使用) |
8、使用技巧
导入命令执行结果:r! 命令
定义快捷键:map 快捷键 触发命令
示例:map ^P I#
:map ^B 0x
连续行注释:n1,n2s/^/#/g
:n1,n2s/^#/ /g
:n1,n2s/^ /// /g
五、软件包管理
1、软件包分类
|–源码包
|–脚本安装包
|–二进制包(RPM包、系统默认包)
2、源码包
源码包的优点:
开源,可以修改源码
可以自由选择需要的功能
软件需要编译安装,更加适合自己的系统,稳定,效率高
卸载方便
源码包的确缺点:
安装过程步骤较多,特别是安装大的软件集合时,容易出现拼写错误
编译时间过长,安装比二进制安装时间长
因为是编译安装,安装过程中一旦报错新手很难解决
3、RPM包
二进制包的优点:
包管理系统简单,容易实现安装、升级、查询和卸载
安装速度比源码包快很多
二进制包缺点:
经过编译,看不到源码
功能选择不如源码包灵活
依赖性强
4、RPM包依赖性
树形依赖:a->b->c
环形依赖:a->b->c->a
模块依赖:模块依赖关系模糊,有的依赖,只在特定的RPM包里有,需要下载另外的RPM包
5、RPM命令管理-安装卸载
1、RPM包命名原则
示例:httpd-2.2.15.e16.centos.1.i686.rpm
httpd | 软件包名 |
2.2.15 | 软件版本 |
15 | 软件发布的次数 |
e16.centos | 适合的Linux平台 |
i686 | 适合的硬件平台 |
rpm | rpm包扩展名 |
2、RPM安装
rpm -ivh 包全名
选项:
-i (install) 安装
-v (verbose) 显示详细信息
-h (hash) 显示进度
–nodeps 不检测依赖性 (一般不使用)
3、RPM包升级
rpm -Uvh 包全名
选项:
-U (upgrade) 升级
4、卸载
rpm -e 包名
选项:
-e (erase) 卸载
–nodeps 不检测依赖性
6、RPM命令管理-查询
1、查询是否安装
rpm -q 包名
选项:
-q (query) 查询
-a (all) 所有
2、查询软件包中文件安装位置
rpm -ql 包名
选项:
-l (list) 列表
-p (package) 查询未安装包信息
3、查询软件包详细信息
rpm -qi 包名
选项:
-i (information) 查询软件信息
-p (package) 查询未安装包信息
4、查询系统文件属于哪个RPM包
rpm -qf 系统文件名
选项:
-f (file) 查询系统文件属于哪个软件包
5、查询软件包的依赖性
rpm -qR 包名
选项:
-R (requires) 查询软件包的依赖性
7、RPM命令-校验和文件提取
1、RPM包校验
rpm -V 已安装的包名
选项:
-V (verify) 校验指定RPM包中的文件
验证内容中的8个信息的具体内容:
S | 文件大小是否改变 |
M | 文件的类型或文件的权限(rwx)是否被改变 |
5 | 文件MD5校验和是否改变(可以看成文件内容是否改变) |
D | 设备的中,从代码是否改变 |
L | 文件路径是否改变 |
U | 文件的所有者是否改变 |
G | 文件的所属组是否改变 |
T | 文件的修改时间是否改变 |
文件类型:
c | 配置文件(config file) |
d | 普通文件(documentaction) |
g | “鬼”文件(ghost file),该文件不应该被这个RPM包包含 |
l | 授权文件(license file) |
r | 描述文件(read me) |
2、RPM包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
rpm2cpio 将rpm转换为cpio格式的命令
cpio 一个标准工具,用于创建软件文档文件和从档案文件中提取文件
cpio 选项 <[文件|设备]>
选项:
-i copy-in模式,还原
-d 还原时自动新建目录
-v 显示还原过程
示例:
rpm -qf /bin/ls (查询ls命令属于哪个软件包)
mv /bin/ls /tmp/ (造成ls命令误删除的假象)
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.e16.i686.rpm | cpio -idv ./bin/ls
(提取RPM包中的ls命令到当前目录的/bin/ls下)
cp /root/bin/ls /bin/ (把ls命令复制到/bin/目录,修复文件丢失)
8、yum 管理
1、IP地址配置
setup (使用setup配置地址)
vi /etc/sysconfig/network-scripts/ifcfg-etho (包ONBOOT=‘no’ 改为yes 启动网卡)
service network restart (重启网络服务)
2、网络yum源
vi /etc/yum.repos.d/CentOS-Base.repo
[base] | 容器名称,一定要放在[]中 |
name | 容器说明,可以自定义 |
mirrorlist | 镜像站点(可以注释掉) |
baseurl | yum源服务器地址,默认是CentOS官方yum源服务器 |
enabled | 用于指定容器是否生效,enabled=1生效,enabled=0不生效 |
gpgckeck | 指定RPM的数字证书是否生效 |
gpgkey | 数字证书的公钥保存位置,不用修改 |
9、yum命令
1、查询
yum list (查询所有可用软件包列表)
yum search 关键字 (查询服务器上所有和关键字相关的包)
2、安装
yum -y install 包名
选项:
install 安装
-y 自动回答yes
3、升级
yum -y update 包名
选项:
update 升级
4、卸载
yum -y remove 包名
选项:
remove 卸载
5、YUM软件组管理命令
yum grouplist (列出所有的可用软件组列表)
yum groupinstall 软件组名 (安装指定软件组,组名由grouplist查询)
yum groupremove 软件组名 (卸载指定软件组)
6、光盘yum源搭建步骤
(1)挂载光盘
mount /dev/sr0 /mnt/cdrom/
(2)让网络源文件失效
cd /etc/yum.repos.d/
mv /CentOS-Base.repo /CentOS-Base.repo.bak (改名,将.repo改为.bak让其无法识别)
mv /CentOS-Debuginfo.repo /CentOS-Debuginfo.repo.bak
mv /CentOS-Vault.repo /CentOS-Vault.repo.bak
(3)修改光盘yum源文件
vim CentOS-Media.repo
将enabled=0改为enabled=1,使这个yum源配置文件生效
10、源码包与RPM包的区别
1、RPM包安装位置
是否安装在默认位置中
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
2、源码包安装位置
源码包安装在指定位置中,一般是:/usr/loal/软件名/
3、安装位置不同带来的影响
RPM包安装的服务可以使用系统服务管理命令(service)来管理,RPM包安装的apache的启动方法是:
/etc/rc.d/init.d/httpd start
service httpd start
源码包安装的服务不能被服务管理命令管理,因为没有安装在默认路径中。所以只能使用绝对路径进行服务的管理,如:
/usr/local/apache/bin/apachectl start