1.Linux介绍
1.1 学习Linux的原因
- 面试必问:基础指令、简单的shell脚本
- 工作必要技能
- 大数据框架运行的平台
1.2 起源
1.2.1 概念:
- Linux是一套免费使用和自由传播(开源)的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、执行多线程和多CPU的操作系统
- 能够运行主要的Unix的工具软件、应用程序和网络协议,支持32位和64位硬件,继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户操作系统
1.2.2 发行版本:
- CentOS:企业级Linux,教学使用此内核&软件
- RedHat:商业化产品
- Ubuntu:最美Linux
2.Linux系统安装
2.1 系统安装
- 由于学习环境中没有第二台电脑使用,所以需要使用VMware这个虚拟机软件来模拟一台电脑的使用
- VMware安装:
a. 下一步安装即可,建议不要直接装在C盘中
b. 安装路径尽量不要出现中文和空格
2.2 虚拟机的创建
- 注意:笔记中没有出现的截图,均表示默认执行下一步
- 创建空白虚拟机:
- 选择“稍后安装”:
- 选择客户机操作系统:
- 命名虚拟机:
- 处理核心数可以修改2-2 & 内存大小可以修改为2048M
- 下一步直至指定磁盘容量
- 完成即可
2.3 安装操作系统
- 将ISO镜像文件放入到虚拟机的虚拟光驱中
- 点击开启虚拟机:
注意:
a. 如果出现提示:此主机支持Intel VT-X,但是Intel VT-X处于禁用状态,则表示当前主板上的虚拟化未开
启;
b. 需要进入到BIOS固件界面找到相关设置调整为enable状态即可;
c. 由于不同的电脑型号进入BIOS固件界面不同,需要自行百度 - 更改系统——安装位置:自定义分区
自定义分区:
/boot引导分区,修改大小为200M
/swap交换分区,修改大小为4096M(通常是虚拟内存的两倍)
/主分区,建议使用剩余全部可用大小
最后分区设置:
最后完成并选择接受更改 - 点击网络连接和主机名:
a. 打开ens33网络,查看此时分配的IPV4:
b. 修改此虚拟机的主机名为master:
- 点击“开始安装”,一定要为root超级管理员账户设置密码:
- 设置普通用户,可操作可不操作:
- 安装完成之后,点击重启即可
- 查看IP地址:ip addr
2.4 finalshell远程连接工具
- 实际工作环境中往往不会直接在VM上操作服务器,通常是使用远程连接工具类似:finalshell来连接服务器使用
- 安装:下一步傻瓜式安装即可
- 配置远程连接:
a. 创建连接:
b. 弹框选接受并保存:
c.配置:
- finalshell是通过网络的方式,对服务器进行远程登录连接;如果出现服务器状态一切正常,但是finalshell无法连接上,检查Windows端的虚拟网卡VMnet8是否正确安装上:
没有以上两个网络适配器可能是由于安装Vmware过程中被安全软件或杀毒软件拦截了,建议是关闭安全软件等先尝试重置虚拟网卡,实在不行再重新安装VMware:
2.5 服务器IP静态化
- 原因:作为服务器,应当有一个静态的IP地址用于用户的连接请求或者配置,不能发生频繁的变化
- 图形化界面可以通过setup指令,进入到网络配置——设备配置——ens33
- 命令行界面:
a. 进入到网络配置文件所在目录下:cd /etc/sysconfig/network-scripts/
b. 编辑其中的ifcfg-ens33:vi ifcfg-ens33:
i. 光标移动到文件的尾行,然后敲下 o,表示插入新行
ii. 编辑,添加以下内容(注意IPADDR&GATEWAY与自身服务器一致):
iii. 保存并退出
敲下 esc ,表示退出编辑模式
敲下 :wq,表示保存修改并退出编辑器
c. 重启网络:systemctl restart network - 说明:
cd | 切换工作目录的命令 |
---|---|
vi | Linux系统中自带的文本编辑软件 |
/etc | 位于根目录下的Linux系统所有配置文件存放的目录 |
sysconfig | 系统的配置文件,往往需要管理员权限才能修改保存 |
network-scripts | 网络配置以及脚本文件 |
ifcfg-ens33 | ens33网卡的配置文件 |
3.Linux命令
3.1 命令提示符
- 格式:
a. [root@master ~]#
b. [tarena@master ~]$ - 说明:
a. [当前登录的用户@当前主机名 当前工作目录]#超级管理员权限 || $普通用户权限
b. 绝对路径:从根目录 / 出发的路径
c. 相对路径:从当前工作目录出发的路径
3.2 命令的书写格式
- 格式:命令主体 选项 参数
- 说明:
a. 三者之间往往使用空格分隔,并且选项通常要通过 - || – 来表示
b. 命令是要运行的主要程序,选项和参数是辅助命令来运行的从而得到用户想要的结果
3.3 常见的基础命令
- pwd:查看当前所在的工作目录
a. 此指令往往用于拷贝完整路径用于编写开发文档或配置文件时使用 - passwd:修改系统密码,建议非必要不使用
- mkdir:创建目录
a. 用法:mkdir [选项]… 目录…
b. 选项:
-p或者- -parents | no error if existing, make parent directories as needed,在有需要时,创建目标目录的父目录,即使这些父目录已经存在也不会出现错误 |
---|
- cd:切换目录
a. 用户:cd 目录…
b. 特殊路径:
符号路径:
~ | 当前用户的家目录;单独表示当前用户的家目录,使用~用户名表示指定用户的家目录 |
---|---|
- | 返回上一次所在的目录 |
. | 表示当前目录 |
… | 表示父级目录 |
- ls :显示目录及文件信息
a. 语法:ls [选项]… 目录…
b. 选项:
-a,-all | 列出所有文件(文件夹),包含隐藏;Linux中的.开头的统统是隐藏 |
---|---|
-l | 显示文件(文件夹)的详细信息:类型、权限、用户、用户组、大小、时间戳、名称 |
-h | 与-l联用,以符合的单位查看文件大小 |
c. 灵活变型:
i. ls -l 等价于 ll,选项也是通用的
ii. 多个选项可以合并写在同一个减号后面
iii. 多个参数需要通过空格区分
- cat || tail:查看文件内容
a. cat:查看文件完整内容
b. tail:查看文件末尾一千个字节的内容,往往用于查看日志文件 - cp:复制文件(文件夹)
a. 语法:cp [选项]… 源文件 目的地目录
b. 选项:
-r, --recursive | 递归复制目录及其子目录的所有内容 |
---|
c.案例:
i. 完成了mkdir练习的前提下:
[root@master ~]#mkdir test
[root@master ~]#mkdir -p demo/demo/test
ii. 将/root目录下的test目录复制到/home目录下
[root@master ~]# cp -r test /home
iii. 将/root目录下的anaconda-ks.cfg文件复制到/home目录下,并改名为install.log
iv. 将/root目录下的demo目录复制到/home目录下
cp -r demo/ /home/
d.cp命令在拷贝过程中,支持对文件进行重命名;一般用于重要配置文件备份,语法:cp [选项]… [-T] 源文件 目标文件
- mv:移动文件(文件夹)
a. 移动语法:mv [选项]… 源文件… 目录
b. 重命名语法:mv [选项]… [-T] 源文件|目录 目标文件|目录
c. 案例
i. 将/home/install.log移动到test目录下
[root@master ~]# mv /home/install.log /home/test/
ii. 将移动后的文件重命名为install.log.bak
[root@master test]# mv install.log install.log.bak - rm:删除命令,可以用于强制删除文件(文件夹)
a. 语法:rm [选项]… 文件…
b. 选项:
-f, --force | ignore nonexistent files and arguments, never prompt忽略不存在的文件或参数,不提示确认删除与否 |
---|---|
-r, -R, --recursive | remove directories and their contents recursivel,递归删除文件夹 |
c. 案例:
i. 删除/home/test/install.log.bak文件:
[root@master test]# rm install.log.bak
rm:是否删除普通文件 “install.log.bak”?yes
[root@master test]# rm anaconda-ks.cfg
rm:是否删除普通文件 “anaconda-ks.cfg”?no
ii. 删除/home/demo目录:
[root@master home]# rm -r demo
rm:是否进入目录"demo"? yes
rm:是否进入目录"demo/demo"? yes
rm:是否删除目录 “demo/demo/test”?yes
rm:是否删除目录 “demo/demo”?yes
rm:是否删除目录 “demo”?yes
d. 说明:
- 千万注意不要随意使用rm -rf 指令,尤其是 不能在根目录/和root目录下使用
- 常见目录说明
用户的家目录 | /root,/home/{suername} |
---|---|
普通用户的可执行文件所在目录 | /bin |
系统管理用的可执行文件 | /sbin |
配置文件 | /etc |
共享库 | /lib |
内核和启动文件 | /boot |
服务器数据 | /var、/srv |
临时文件 | /tmp |
系统信息和挂载光盘\u盘\磁带 | 其余目录 |
4.免密登录
4.1 运行级别:
- 运行级别
3 | 表示命令行界面 |
---|---|
5 | 表示图形化界面 |
- 查看:who -r
- 切换:init 数字
4.2 克隆虚拟机
- VMware中首先将需要克隆的虚拟机关机,右键:虚拟机–管理–克隆
- 下一步选择“当前状态”,再下一步选择“链接克隆”
- 修改名称和路径
- 点击完成
4.3 开启
- 开启两台虚拟机,其中需要修改克隆机的hostname和IP地址
a. 修改静态IP
i. 查看克隆机的IP地址:
ii. 修改克隆机的静态IP为新分配的IP即可:
编辑:vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改其中的IPADDR为此时新分配的IP:
保存退出(退出编辑 esc, 保存退出 :wq):
iii. 再次查看,无源服务器的IP即可:
b. 修改域名:
i. 查看:hostname
ii. 先执行: hostname slave01(临时生效)
iii. 然后再修改配置中的域名,编辑:vi /etc/hostname,将master修改为slave01(或者执行:hostnamectl set-hostname slave01)重启后永久生效
iv. 查看
4.4 SSH免密登录
- 测试:
a. 从源服务器通过ssh方式登录到克隆服务器上:
b. 登出,回到源服务器:logout - 免密登录:
a. 概述:Linux中往往在多台服务器需要以网络的形式组织成集群共同工作的场景下,需要配置此集群内的所有服务器之间可以互相免密登录
b. 原理:Linux中免密登录通常默认使用RSA非对称加密算法,会成对的生成公钥证书和私钥证书
c. 作用:
i. 公钥证书:使用公钥证书对服务器或文件内容进行加密
ii. 私钥证书:只有持有匹配的私钥证书的PC才能正常访问到被公钥证书加密的内容
iii. 注意:这种只要持有私钥就能访问公钥加密内容的方式,才存在风险,因为一旦私钥文件泄露,服务器上的数据也就存在泄露的风险,不过Linux同时也支持对两个公钥&私钥证书文件进行加密。 - 使用场景:
a. 单纯使用证书来登录服务器:
好处:
i. 使用证书的登录方式可以避免密码泄露或遗忘
ii. 同时证书登录服务器的方式也是有服务器加固的方式
iii. 服务器可以设置不允许使用密码进行远程服务器,只允许证书的方式登录
iv. 证书本身也可以支持加密,所以即使证书丢失,在不知道此密码的情况,证书属于无效文件
b. 集群中使用证书进行免密登录:
i. 因为但凡是涉及到集群的情况,通常都不会小数目的服务器数量,众多的服务器之间进行相互通信以及数据传输等操作,如果没有免密登录则需要频繁的输入密码
ii. 因此使用证书来管理集群内部服务器之间的登录方式,免除需要手动输入密码的情况 - 工作原理图解:
- 证书操作:
a. 在源服务器bigdata01上,执行生成证书:
ssh-keygen
回车执行即可
查看证书:
id_rsa | 私钥证书 |
---|---|
id_rsa.pub | 公钥证书 |
known_hosts | 访问过的服务器只要确认记录则会保存在此文件中 |
b. 将源服务器的公钥证书内容发送给克隆服务器bigdata02,执行拷贝公钥证书内容:
ssh-copy-id {remoteUsername}@{remoteServerIP}
例如: ssh-copy-id root@192.168.88.178
执行指令,首次会要求输入远程服务器的对应用户的密码,这一步是向远程服务器发送当前服务器的公钥证书文件id_rsa.pub
i.查看克隆服务器上/root/.ssh中的证书:
authorized_keys | 存放在远程服务器上,用于记录来访服务器的公钥证书内容 |
---|
说明:此文件可以同时保存多台 服务器的公钥证书内容,内容都来自于证书注册方式;也即如果这文件中不存在相应公钥证书内容,则无法建立免密互通
ii. 验证:
直接在源服务器上执行:ssh 192.168.88.178
此时无需输入远程服务器的密码,表示免密互通建立成功
5. Linux之软件包管理
5.1压缩和打包
- 压缩:通过某些算法的支持,将文件尺寸进行缩小,同时不会损坏文件的内容,保证文件内容的完整性
- 打包:将多个文件或文件夹整理成一个文件,这个文件称之为包文件,更便于进行传输和部署
- 注意:Linux系统中文件的后缀名不重要,但是针对于压缩文件||压缩包文件的后缀名是必须的,因为需要让程序员根据此时压缩|包文件的后缀名来使用相应的算法进行解压处理
- 常见的压缩文件|包的后缀名
*.gz | gzip程序压缩的文件 |
---|---|
*.tar | tar程序打包的文件,此时未压缩 |
*.tar.gz | tar程序打包的文件,并通过gzip算法进行压缩;Linux系统中最为常见的解压版程序软件的后缀名 |
5.2 压缩
- gzip指令:通过指定选项来实现压缩或者解压缩
a. 语法:gzip 【选项…】 【文件…】
b. 可用选项:
-d | 解压缩 |
---|---|
-v,–verbose | 可以显示出源文件/压缩文件的压缩比等详细信息 |
-l | 查看压缩文件的压缩比 |
-1……9 | 压缩等级:1压缩最快但是压缩比最差,9压缩最慢但压缩比最佳,默认是6 |
-c | 将压缩的数据输出到标准输出 |
-t | 查看压缩文件的压缩比,检查是否无误 |
c. 案例:
i. 将/root/anaconda-ks.cfg 压缩,并显示其压缩信息
gzip -v anaconda-ks.cfg
注意:gzip算法压缩,不会保留源文件
ii. 解压上一个案例的压缩文件
gzip -d anaconda-ks.cfg.gz
iii. 扩展:如要想要保留源文件,使用数据重导向技术: >覆盖 && >>追加
压缩并将压缩数据进行重导向: gzip -c anaconda-ks.cfg > install.log.gz
检查压缩文件是否无误:gzip -tl install.log.gz
iii. 扩展:如要想要保留源文件,使用数据重导向技术: >覆盖 && >>追加
检查压缩文件是否无误:gzip -tl install.log.gz
compressed uncompressed ratio uncompressed_name
891 1555 44.9% install.log
5.3 打包和解打包指令
- tar指令:可以将一个或多个文件、文件夹打包成一个文件,并且可以结合上述的gzip压缩算法来实现对包文件
的压缩和解压缩操作 - 语法:
a. 打包并压缩:tar 【选项…】 【newFileName.tar.gz】 【sourceFileName…】
b. 解打包并解压缩:tar 【选项…】 【sourceFileName.tar.gz】 【选项】【dirPath】 - 常用选项:
-c | 建立打包文件,与压缩算法选项联用可以表示压缩 |
---|---|
-x | 解打包文件,与压缩算法选项联用可以表示解压缩 |
-t | 查看打包文件的内容:包含哪些文件或文件夹 |
-z | gzip算法选项,表示通过gzip算法的支持进行压缩或解压缩;此时文件后缀必须是.tar.gz |
-f,–file | filename,紧跟着需要处理的文件名称,表示此选项一定是在组合选项最后一位 |
-v | 在压缩、解压缩的过程中将所有正在处理的文件名显示出来,不使用则无任何显示 |
-C | 用于解压时,表示将解压文件到特定的目录下;不使用则表示解压到当前工作目录下 |
- 练习:
a. 对root目录下的anaconda-ks.cfg文件进行打包并压缩
tar -czvf anaconda-ks.cfg.tar.gz anaconda-ks.cfg
b. 将/home目录和/root目录打包并压缩成 bakDir.tar.gz文件
tar -czvf bakDir.tar.gz /home /root
c. 将上述案例中的压缩包文件解压到当前目录下
tar -xzvf anaconda-ks.cfg.tar.gz
d. 将上述案例中的压缩包文件解压到/home目录下
tar -xzvf anaconda-ks.cfg.tar.gz -C /home - 总结常用组合选项:
a. 压缩并打包:-czvf || -czf
b. 解压缩并解打包:-zxvf || -xzf
c. 选项中除了-f一定是在末尾,其余三个任意
5.4 软件管理——RPM
- 起源:最初只有*.tar.gz这类的压缩包文件,用户需要去编译每个想要在Linux上运行的软件;用户认为系统很
有必要一种方法来管理这些安装在机器上的软件包;RedHat开发的“rpm”包管理系统 - 特点:
a. 自带编译后的文件,免除了用户对软件编译 的过程
b. 可以自动检测文件系统(硬盘)的容量、系统的版本;避免软件安装出现错误导致安装不完全
c. 自带软件的版本信息、帮助文档、用途说明 - 缺点:
a. 无论是要安装还是要卸载,RPM有一个非常关键的依赖关系
b. 所安装的软件需要依赖,则要优先安装依赖;卸载同理 - 默认路径:
/etc | 一些配置文件放置的目录 |
---|---|
/usr/bin | 一些可执行文件,也即指令 |
/usr/lib | 一些程序使用的动态链接库或jar包库 |
/usr/share/doc | 一些基本的软件使用手册和说明文件 |
/usr/share/man | 一些Linux命令的随机帮助说明文件 |
- 操作:
a. 语法:rpm [选项] {文件.rpm||文件名称关键字}
b. 查询
i. 选项:
-q | 仅仅查询,后面要指明需要查询的软件名或keyword; |
---|---|
-qa | 列出所有已经安装在Linux系统上的所有软件 |
-qR | 列出和该软件有关的相依赖的软件所包含的文件 |
ii. 变形,结合管道符 | 来搭配其他命令使用:
查看已安装软件的前三个: rpm -qa | head -n 3
查看指定软件是否已安装:rpm -qa | grep java
c. 安装:
i. 选项:
-i | install 表示安装 |
---|---|
-v | 表示显示详细安装过程 |
-h | 表示显示处理进度(进度条) |
ii. 案例:
在Linux文件系统的/home目录下创建软件管理目录:mkdir -p /home/software
将nc*****.rpm文件上传到Linux系统中的/home/software:
通过rpm指令安装nc这个小型网络管理工具:
rpm -ivh nc-1.84-22.el6.x86_64.rpm
查看nc指令是否存在并可用:
iii. 进阶使用:
可以直接安装网络中的rpm包:rpm -ivh http://网络地址/package.rpm
可以同时安装多个rpm包(按照包名顺序执行安装):rpm -ivh pkg.rpm1 pkg.rpm2 ……
d. 卸载:
i. 选项:
-e | 卸载指定的软件,需要指定软件的完整名称 |
---|
ii. 案例:
rpm -e nc-1.84-22.el6.x86_64
e. 更新:
i. rpm -Uvh pakName
无论系统中是否安装此软件,执行后都会安装最新版
ii. rpm -Fvh pakName
只有安装过的软件才能执行此更新操作
5.5 软件管理——YUM
- YUM:是RedHat以及CentOS中使用的shell前端软件包管理器,基于RPM包管理,能够从指定的服务器上自
动下载RPM包并安装,并且可以自动处理依赖关系,也即一次安装所有依赖的软件包 - 原理:
a. 通过分析RPM的信息进行软件的安装、升级以及卸载等等;
b. 优点在于可以解决RPM的依赖问题;缺点在于YUM的所有执行操作都需要repo文件——YUM源 - YUM源:
a. 通常YUM源文件存储在/etc/yum.repos.d/目录下,此目录下所有以.repo结尾的文件统统都是YUM源文件
b. 此类文件可以手写,通常建议上网搜索权威结构提供的YUM源
c. 查看目录下 的CentOS-Base.repo文件:
i. [extras]:YUM的ID,必须唯一的
ii. name:具体的名称
iii. mirrorlist:镜像服务器的地址,有很多可用的服务器地址,用于下载软件
iv. gpkcheck:1表示使用公钥校验rpm的正确性
v. gpgkey:校验的key地址 - YUM操作:
a. 查询:yum search pkgName || yum list
i. search :查询某个软件名或包含关键字的软件
ii. list:列出目前yum所管理的所有软件名以及版本信息
b. 安装:yum install [-y] pkgName
i. 案例:安装vim指令(最小化安装模式)
指令:yum -y install vim
安装完成之后,测试可用:
c. 卸载:yum remove pkgName
d. 更新:yum update pkgName - 替换YUM源——CentOS7系列替换成aliyun的YUM源
a. 当前工作目录/etc/yum.repos.d/
b. 首先备份原先官方的Base源:cp CentOS-Base.repo CentOS-Base.repo.bak
c. 获取阿里的YUM源覆盖本地的YUM源
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
d. 或者,删除掉此时的CentOS-Base.repo:rm -rf CentOS-Base.repo
e. 然后将群内的CentOS-Base.repo文件上传到/etc/yum.repos.d/目录下
f. 确保内容中的baseurl内容为aliyun:
g. 再次去执行yum安装vim或者安装wget等等
- YUM客户端的运行机制
a. 客户端每次使用YUM调用install或者search的时候,都会去解析/etc/yum.repos.d/下的所有.repo结尾的源文件,此文件中指明了可用的YUM服务器地址
b. YUM需要定期去“更新”yum服务器上的RPM“清单”,然后将“清单”下载 保存到YUM自己的cache当中;也即/var/cache/yum/x86_64/7/base目录下
c. 每次调用yum安装包的时候都会去此cache目录下找“清单”,根据“清单”中的RPM包描述从而确定安装包的名称、版本、所需要的依赖包等等,如果不存在cache则连接yum服务器进行下载并安装 - RPM和YUM的取舍
a. 如果安装、卸载、更新的软件是单个独立的离线安装包,那么就建议使用RPM的方式
b. 如果安装某个软件时候,发现此软件有众多的依赖环境,建议首选YUM方式
i. 例如安装上传工具lrzsz:yum -y install lrzsz
ii. 然后可以直接使用 rz 命令打开上传窗口,完成文件上传
6.Linux之vim编辑器
6.1 VIM概述
- 一个类VI的文本编辑器,只不过在vi的基础上增加了一些新特性,比如说给字体添加配色方案、简单的代码语法正确性检查;vim也是公认的最好用的类vi编辑器
6.2 使用VIM编辑器:
- vim有三种模式:一般(查看、复制等)模式、编辑模式、命令模式
三种模式之间的转换:
只能由一般模式转到编辑模式或命令模式
编辑和命令之间无法相互转换 - 任意复制一份模本文件以供操作演示:cp /etc/profile /home
- 以/home/profile为例进行演示:cp /etc/profile /home
- 一般模式:
h或← | 光标左移一个字符。如果是20h,表示左移20个字符。 |
---|---|
j或↓ | 光标下移一个字符 同上 |
k或↑ | 光标上移一个字符 同上 |
l或→ | 光标右移一个字符 同上 |
[Ctrl]+[f] | 屏幕向下移动一页 Page Down!! |
[Ctrl]+[b] | 屏幕向上移动一页 Page Up !! |
0或[Home] | 移动到此行最前面字符处!! |
$或[End] | 移到光标所在行的行尾!! |
H | 光标移到当前屏幕最上方行的第一个字符!! |
M | 光标移到当前屏幕中间行的第一个字符!! |
L | 光标移动到当前屏幕最下方行第一个字符!! |
G | 移到此文件最后一行!!! |
nG | 移到第n行 |
gg | 相当于1G,即移到第一行!!! |
n[Enter] | 光标下移n行 |
/word | 向下查找单词“word”(!!!) |
?word | 向上查找单词“word”(!!!) |
n | 表示重复前一个查找操作 |
N | 与n相反(反向查找) |
yy | 复制光标所在行(!!) |
nyy | 复制光标所在向下n行(n为数字) |
y1G或ygg | 复制光标所在行到第一行所有数据 |
yG | 复制光标所在行到最后一行所有数据 |
y$ | 复制光标所在处到同行最后一个字符 |
y0 | 复制光标所在处到同行第一个字符 |
p | 将已复制的数据粘贴到光标所在下一行 |
P | 将已复制的数据粘贴到光标所在上一行 |
u | 复原前一个操作(类似于windows中的ctrl+z)!!! |
Ctrl+R | 表示恢复上一个撤销 |
x | 向后删除一个字符 |
nx | 向后删除n个字符(n为数字) |
X | 向前删除一个字符 |
dd | 删除光标所在行(!!!) |
ndd | 删除光标所在行以下n行(n为数字,包含当前行在内) |
d1G | 删除光标所在行到第一行所有数据(包括所在的行) |
dG | 删除光标所在行到最后一行(!!) |
d$或d end | 删除光标所在处到同行最后一个字符(!!) |
d0或d home | 删除光标所在处到同行第一个字符。(!!) |
- 编辑模式:
a. 进入编辑模式的快捷键:
i | 从光标所在处插入 |
---|---|
I | 从光标所在行的第一个非空白字符处插入 |
a | 从光标所在处的下一个字符处插入 |
A | 从光标所在行的最后一个字符处插入 |
o | 从光标所在行的下一行插入新行 |
O | 从光标所在行的上一行插入新行 |
r | 替换光标所在处字符一次 |
R | 一直替换光标所在处字符知道按下ESC |
b. 退出编辑模式:ESC
- 命令模式:
a. 进行命令模式的快捷键:
: | 输入命令 |
---|---|
/ ? | 查找单词,被查找到的所有单词会高亮显示,并且是Linux系统中所有文件中的此单词均会高亮显示;一处查找处处高亮 |
b. 常用命令:
w | 保存 |
---|---|
w filename | 另存为 |
q | 退出编辑器:如果文件内容发生过修改并且未保存,则无法直接退出 |
q! | 不保存修改强制退出 |
wq | 保存修改并退出 |
!command | command表示所有可在Linux系统中执行的命令,例如:!ip addr,会将IP信息打印在屏幕上,按任意键可以重新回到编辑器汇总 |
set nu | 显示 行号 |
set nonu | 取消显示行号 |
noh | 取消高亮 |
- 扩展:Linux系统中vim编辑文件,发生过修改则一定要正确的使用指令q退出编辑器,否则会出现交换文件导致下一次使用此文件出现异常提示:交换文件 “/home/.profile.swp” 已存在!
可以按照提示:删除此交换文件 或者 修复文件