VI编辑器命令及Linux在VM虚拟机安装管理

本课程是2017年在慕课网上的视频笔记,主要内容为VI编辑器命令及Linux在VM虚拟机安装管理,是tony老师Linux达人养成计划第二个课程,是新人快速学习很好的参考资料,如果想查阅Linux达人养成计划第一部,请点击链接。

VI编辑器  概述
visual interface (可视化接口,类似Windows中的记事本,但是更强大)
VI 的升级版 VIM  提升方面:
1、VIM支持多级撤销(CTRL+Z,而VI中是用字母U而且只能撤销一步)
2、VIM可以跨平台运行(而VI只能在Linux系统中)
3、VIM支持语法高亮
4、VIM支持图形界面
总之,可以使用VIM 代替VI 进行使用。
 
VI 编辑器的操作模式
1、command mode - 命令模式:剪切、复制、撤销等命令
2、insert mode - 输入模式:用于输入文本
3、last line mode - 底行模式(尾行、末行):执行指令如保存、退出、搜索等等(与命令模式类似,不执行命令时视觉上无法区分)
 
vim abc          #以vim编辑器打开abc的文件,如果不存在则创建一个并打开。
注意:VIM默认是命令模式,所以打开后不能直接输入文字,此时等待用户输入命令。输入字母i 即可进入输入模式。输入完成后,按ESC键后就切换到底行模式,输入:wq (q!为直接退出)回车即可。重新打开 vim abc  ,连续按两次字母DD,即可直接删除第一行(默认光标在第一行,版本不同,光标位置略微不同,可能在上一次退出的位置)。
vim + abc  打开文件,把光标定位在文件最后一行
vim +3 abc 打开文件,把光标定位在文件第三行,当定位3超过文件行数,定为到最后一行
vim +/pi abc  将光标定为到第一次匹配pi 的位置,此时,按N键可以在含有pi行来回切换
vim aa bb cc 一次性打开或者创建三个文件,输入:n可以向下切换三个文件,:N向上切换(也可以使用:prev)
常用指令
底行模式常用指令
:w    从内存写入硬盘,即保存
:q    退出
:!     强制执行,忽略修改
:ls    列出打开的所有文件
:n    切换到下一个文件
:N    切换到上一个文件
:15   将光标快速定位到15行
/abc  从当前光标位置搜索定位到第一次匹配abc的位置
?abc  从当前光标位置搜索定位到向上第一次匹配abc的位置
命令模式常用命令
h       光标左移
j        光标下移
k       光标上移
l        光标右移
ctrl+f    向下翻页(front)
ctrl+b   向上翻页(back)
ctrl+d    向下翻半页(down)
ctrl+u    向上翻半页(up)
dd       删除光标所在的行
o        在光标所在行的下方插入一行并切换到输入模式
yy       复制光标所在的行
p        在光标所在行的下方粘贴
P        大写P,在光标所在行的上方粘贴

VI编辑器键盘图片

VI编辑器键盘图片

磁盘管理
df [选项]    查看磁盘分区的使用情况,比如:df -lhT   df -lhT -t ext4
l        仅显示本地磁盘(默认)
a        显示所有文件系统的磁盘使用情况,包含比如/proc/等0字节的分区
h        以1024进制  计算最合适的单位(自动选择KB\MB\GB) 显示磁盘容量
H        以1000进制  计算最合适的单位(自动选择KB\MB\GB) 显示磁盘容量
T        显示磁盘分区类型
t        显示指定类型文件系统的磁盘分区(后面跟上参数,比如EXT4)
x        不显示指定类型文件系统的磁盘分区(后面跟上参数,比如EXT4)
注释:1000进制,工业上为了计算方便使用,新买的硬盘空间少了那么多,可能是这原因。
du [选项]   统计磁盘上的文件大小
      b     以byte   为单位统计文件
      k     以KB     为单位统计文件
      m     以MB     为单位统计文件
      h     以1024进制  计算最合适的单位(自动选择KB\MB\GB) 显示磁盘容量
      H     以1000进制  计算最合适的单位(自动选择KB\MB\GB) 显示磁盘容量
      s     指定统计目标  比如:du -sm *.zip  du -sh *.zip   du -s ratchet/
 
硬盘分区与格式化概述(当硬盘空间消耗殆尽时怎么办?)
方法:在保留原硬盘的基础上,给服务器添加新硬盘。
Linux在VM虚拟机中添加新硬盘
一般是需要关机添加新硬盘,现在有热插拔技术,可以带电情况下连接新硬件
虚拟机不支持热插拔。
◆ 关机后→点击→编辑虚拟机设置→添加→硬件类型为硬盘→继续→继续→继续→填写新硬盘大小→继续→完成确定
◆ 打开电源→使用终端工具shell连接服务器→等待分区、格式化、挂载才能使用(fdisk -l查看到,原硬盘的分区列表,和新添加的硬盘名称,默认为/dev/sdb)
 
■ 目前在shell命令下→fdisk /dev/sdb(进入分区模式)→输入n→输入p→1或回车→回车(起始位置)→+3000M(终止位置,设定新分区大小)→完成→输入p查看已完成的分区→新建扩展分区→输入e→回车→回车(起始位置)→回车(终止位置,默认回车为全部)→完成→输入n(出现逻辑分区l了)→输入l→回车(起始位置)→+2000M(终止位置,分配逻辑分区大小)→输入n继续分逻辑分区→回车(起始位置)→回车(终止位置,默认回车将剩余容量分配)→分区完成→输入p查看
 
■ 此时分区完成查看到的只是相当于一个分区方案,并没有实际执行,所以查看后觉得不满意是可以修改的。比如增加一个主分区,这时候就需要先删除扩展分区,步骤如下:
删除扩展分区→输入d→输入2(因为上面2为扩展分区,逻辑分区同时删除)→输入p可以查看到分区列表和上面的新建分区步骤一样→输入n→输入p→回车(起始位置)→+1G(终止位置,第二个主分区)→输入n→输入e→回车(起始位置)→回车(终止位置)→修改完成→添加逻辑分区→输入n→输入l→回车(起始位置)→+1G(终止位置)→输入n→输入l→回车(起始位置)→回车(终止位置,默认剩下全部容量)→完成→输入p查看修改后的分区列表→输入w→最终完成分区
fdisk -l查看分区状况
 
硬盘分区与格式化
分区模式 MBR  (主分区不超过4个,单个分区容量最大2TB)(只能用fdisk命令分区)
分区模式 GPT  (主分区个数和单个分区容量“几乎”没有限制,因为最多可分128个主分区,这就导致主分区与扩展分区的界限模糊了,扩展分区原本就是解决主分区过少的问题。而每个分区大小最多可达18EB=18432PB=18874368TB=19327352832GB。缺点是不适合32位系统X86)(parted 可以进行2种模式的分区)
 
用parted命令进行分区→输入parted→默认状态在第一块硬盘→输入select /dev/sdc→输入mklabel msdos(给目标硬盘指定分区表类型,然后才能添加分区,MBR分区就使用msdos,GPT分区就使用gpt)→输入print all (可查看所有硬盘的分区模式)→分2种
⑴、交互模式进行GPT分区
   →输入mkpart→输入分区名称(直接回车默认为空)→指定分区文件类型(直接回车默认为ext2)→输入开始位置(第一个分区,从0开始输入0)→输入2000→针对弹出的警告,输入cancel(因为硬盘有4K对齐的说法,是为了提高硬盘的性能,尤其针对固态硬盘,因此往往牺牲第一个分区来提高硬盘性能,分区可非常小)→最开始位置重新开始→前面省略→开始位置输入1→输入2000→完成
⑵、命令模式进行GPT分区
  →mkpart test 2000 3000    (test为分区名称,命令模式名称不可省略;2000为分区起始位置;3000为终止位置)(注意:前一个位置并不包含第2000M,可以使用print进行查看;当输入的指定位置有重合时,系统会自动提示)
⑶、删除分区
语法:rm 分区编号
⑷、分区单位
默认是以MB为单位进行分区的,要切换单位,使用命令:unit GB
⑸、退出分区(退出即保存分区方案)
quit
 
格式化
ls -l /dev/sdb*      查看磁盘情况
格式化命令: mkfs.[文件类型] 磁盘名称  或者  mkfs -t [文件类型] 磁盘名称
mkfs.ext3 /dev/sdb1
mkfs -t ext4 /dev/sdb2
注意:MBR模式下的扩展分区是不能格式化的,只有主分区和逻辑分区可以格式化
      GPT模式下格式化后,只能采用parted下的print才能看到GPT硬盘的分区表
 
分区挂载(分区默认的挂载目录是/mnt ,而且必须挂载到已经存在的挂载点)
临时挂载
mkdir -p /mnt/imooc           #建立挂载点(建立挂载目录)
mount /dev/sdb1 /mnt/imooc    #挂载(挂载命令 跟上挂载的硬盘名称 挂载点)
分区卸载
unmount /mnt/imooc
用久挂载(需要编辑配置文件)
vim + /etc/fstab
在最后一行加入设备名称、挂载点、文件系统类型、defaults、0、0
/dev/sdb1      /mnt/imooc   ext4   defaults   0   0
:wq
 
如何为硬盘添加swap交换分区?
第一,建立一个普通的Linux分区(主分区或者逻辑分区都可以)
第二,修改分区类型的16进制编码
第三,格式化交换分区
第四,启用交换分区
 
进入分区模式
fdisk /dev/sdb
输入p查看分区类型列表,找到需要作为swap分区的主分区或者逻辑分区ID,比如83
输入t修改分区类型编号,输入分区的编号6(应该是分区设备的编号)
输入 L 查看编码列表,可以看到83为普通Linux分区,82为Linux swap的编号
输入16进制的编码82,回车后输入p 查看确认下分区类型编号(ID)是否改变
输入w保存
输入  mkswap /dev/sdb6  格式化 (这个格式化命令不同)
输入 swapon /dev/sdb6 启用交换分区
输入 free 可以查看分区加载状况
停止加载交换分区   swapoff /dev/sdb6
 
用户管理
Linux中用户和用户组的概念
用户:每一个使用操作系统的人。Linux系统允许同一时间多个用户登录
用户组:在Linux系统中具有相同权限的一组用户;Linux系统中可以存在多个用户组
 
所有用户和用户组信息都保存在 /etc/group 目录配置文件下
cat /etc/group
Group :        x   :    124 :   abc,def,xyz
组名称: 组密码占位符:组编号: 组中用户名列表
注释:⑴、用户组也是有密码的;⑵、当这个组中用户名和组名相同而且只有一个用户,组中用户名列表可以为空,即users:x:100:   后面虽然为空,用户组不一定为空;⑶、root:x:0:  的组编号一定为0,其他1-499都是系统预留的编号,比如安装一个数据库软件,就会创建一个数据库的用户
cat /etc/gshadow
Group:      *  :            :   abc,def,xyz组,而且越早安装编号越小;用户手动创建的用户组编号从500开始;⑷、组密码占位符全部用x表示。
 
/etc/gshadow 存储当前系统中用户组的密码信息
 
组名称: 组密码:  组管理者:   组中用户名列表
注释:⑴、组密码为 *、!、空、时都可以认为密码为空;⑵、组管理者一般都为空,表示组内所有用户都可以管理这个用户组;
 
/etc/passwd 存储当前系统中所有用户的信息
cat /etc/passwd
user:       x:         123:       456:      xxxxxxxx:  /home/user:  /bin/bash
用户名:密码占位符:用户编号:用户组编号:用户注释信息:用户主目录:shell类型
注释:用户主目录,当创建用户以后,会在home目录下创建对应的用户主目录存储用户信息;root的用户编号一定为0
 
/etc/shadow 存储当前系统中所有用户的密码信息
cat /etc/shadow
user:   vf;/zu8sel...:::::
用户名:单向加密的密码:::::
 
用户和用户组的管理命令
 
用户组命令                           解释         例子:
groupadd [用户组名称]                创建用户组   groupadd sexy
groupmod -n [新名称] [用户组名称]    用户组改名   groupmod -n market sexy
groupmod -g [组编号] [用户组名称]    修改组编号   groupmod -g 668 market
groupadd -g [组编号] [用户组名称]    创建并指定组编号  groupadd -g 888 boss
groupdel [用户组名称]                删除用户组    groupdel market
注释:删除用户组需要先删除用户组中的用户,否则组中的用户在后续的权限中收到影响
 
用户命令                             解释           例子
useradd -g [用户组名称] [用户名称]   创建新用户    useradd -g sexy sdf
useradd -d [路径含文件夹名称] [用户名] 创建用户并指定文件夹 useradd -d /home/xx im
usermod -c [注释] [用户名]           给用户添加注释  usermod -c ddd sdf
usermod -l [新用户名] [原用户名]     更改用户名     usermod -l cls sdf
usermod -d [指定文件夹] [用户名称]   更改用户文件夹 usermod -d /home/cls cls
usermod -g [用户组名] [用户名]       更换用户用户组 usermod -g sexy im
userdel [用户名称]                   删除用户       userdel im
userdel -r [用户名称]                删除用户并删除文件  userdel -r im
注释:⑴、当未指定用户文件夹时,系统会自动创建与用户同名的文件夹;⑵、而当指定了用户文件夹时,并未指定用户所在组别,系统会自动创建与用户名同名的用户组;⑶、更换用户用户组更换的是主要组,概念看后面。
 
touch /etc/nologin        
#创建这个文件(内容随意或者为空),就禁止除了root其他所有用户登录
 
用户和用户组进阶命令
命令                      解释             例子
passwd -l [用户名]        锁定用户           passwd -l cls
passwd -u [用户名]        解锁用户           passwd -u cls
passwd -d [用户名]        清除用户密码       passwd -d cls
 
主要组与附属组
用户可以同时属于多个组,但总有一个主要组,而其他的为附属组。
gpasswd -a [用户名] [需添加组名称]         #将用户添加入一个附属组,例子:    gpasswd -a cls boss  ,此时的boss组为cls的附属组
gpasswd [用户组名]     更改组密码,然后输入密码。
gpasswd -a [用户名] [需添加组名称],[需添加组名称]     #将用户添加多个附属组,而此时关于这个用户的文件都属于这个用户的主要组文件夹,而当用户需要使用附属组身份进行操作时,就需要进行组的切换(这个操作由用户执行),使用命令:newgrp boss 组密码
删除附属组
gpasswd -d [用户名] [需删除组名称]       gpasswd -d cls boss
创建用户指定主要组并指定附属组(这个命令没完。。。自己加的)
useradd -g [主要组名称] -G [附属组名称],[附属组名称] [用户名]
 
其他命令
su [用户名]     用户切换,如果不输入用户名,默认切换到root,但是需要密码。
Whoami          显示当前登陆用户名
id imoosc   显示指定用户信息,包括用户编号、用户名、主要组编号及名称,附属组列表
groups imooc    显示imooc用户所在的所有组
chfn imooc      设置用户资料,依次输入用户资料
finger imooc    显示用户详细资料

请按F5,刷新后再评论
  • 全部评论(0
    还没有评论,快来抢沙发吧!