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