Linux自用笔记(待续)
实训1:通过虚拟机安装麒麟操作系统
1、在VMware中新建虚拟机(参考教材P6-9)
(1)VMware Workstation是一款强大的虚拟化软件,允许用户在单台物理计算机上创建和运行多个虚拟机,每个虚拟机可以独立运行不同的操作系统和应用程序。
(2)打开VMware Workstation软件,按照以下要求新建虚拟机:
①配置类型选择:典型(推荐),
②安装客户机操作系统选择:稍后安装操作系统,
③客户机操作系统选择:Linux ,版本选择:其他Linux 5.x 内核64位 ,
④虚拟机名称 修改为: KylinServer-学生姓名 ,位置 使用默认选项 ,
⑤磁盘容量指定为 20GB (官方建议>50GB),
⑥自定义硬件: 内存修改为1GB ,
CD/DVD选项选择:使用ISO映像文件,选中麒麟系统的ISO文件。
2、安装麒麟操作系统(参考教材P9-11)
(1)选中新建的虚拟机,点击“开启此虚拟机”。
(2)(鼠标点击一下虚拟机界面,使得键鼠能被虚拟机使用),使用enter键选择第一个选项“Install Kylin Linux Advanced Server V10”,进入安装界面。
(3)按照以下要求设置安装选项后开始安装:
①语言:简体中文,
②安装目的地:已设置好的本地磁盘,
③网络和主机名:打开以太网(ens33)开关 ,
④Root密码:按照安全性要求设置密码(8位以上、必须包含数字、大小写字母和特殊字符) 。
(4)安装完成后点击“重启系统”进入麒麟操作系统。按照以下步骤完成初始化配置:
①内核编辑界面:enter键选择第一个选项“Kylin Linux Advanced Server(4.19.90-52.15.v2207.ky10.x86_64) V10” ,
②许可证信息 :勾选“我同意许可协议” 。
(5)结束配置后进入登录界面,输入用户名“root” 和安装过程中设置的root密码,即可登录系统。
3、了解虚拟机相关操作
(1)快照:快照是虚拟机在某一特定时间点的状态捕抓,记录了该时间点的所有数据和配置。如果后续发生数据损坏或配置错误,可以通过恢复到该快照来迅速恢复系统。
为安装好的麒麟操作系统创建系统快照:快照名称为“initial ”,快照描述为 “初始状态” 。
(2)克隆:克隆是创建一个与原始虚拟机完全相同的副本的过程,可以使得用户在不需要多次安装的情况下拥有多个配置相同的虚拟机。
创建一个来自麒麟操作系统当前状态的链接克隆 。
(3)迁移:安装好的虚拟机系统以文件夹的形式存在,便于迁移。该文件夹中存放了虚拟机相关文件(如虚拟机配置文件.vmx、虚拟机磁盘文件.vdmk等)。
实训2:认识shell及系统基础命令
1、认识终端与shell(参考教材P17-19)
(1)麒麟操作系统上常说的终端是指终端模拟器,也称虚拟终端,也就是命令行窗口。
(2)Shell俗称“壳”,是一个用于接收用户指令、传递给内核执行并返回执行结果的程序。
(3)麒麟操作系统默认使用的Shell是 bash ,这也是当前大多数Linux发行版的默认shell。

(4)在图形界面下按下ctrl + alt + t组合键,可以启动终端。
2、了解命令行及其操作(参考教材P20-21)
(1) 典型的命令行由用户名、主机名、工作目录、命令提示符组成。观察刚刚启动的命令行窗口,可知目前登录的用户是 root ,当前主机的名称是 localhost ,
(2) 先输入命令:cal,回车执行,查看执行结果。
然后输入命令:CAL ,回车执行,对比两次运行结果可知:
Linux的命令是 区分 大小写的。
(3)命令补全
① 输入rmd,然后按下键盘的Tab键。发现Tab键可以 补全命令 。
② 输入wh,空格,然后Tab键按两次。发现Tab键按两次可以 列出所有历史已执行的命令 。
(4)命令中断
①输入Ctrl+c
[root@www ~]# ping localhost
//命令开始执行后,按下[Ctrl+c]组合键,直接中断命令的执行。②输入Ctrl+z
[root@www ~]# vi a.txt
[1]+ 已停止 vi a.txt
//命令开始执行后,按下[Ctrl+z]组合键,将当前任务暂停并挂起。(5)命令历史
① 输入命令并执行后,shell会存储用户所敲入命令的历史记录,方便用户再次运行之前的命令。使用键盘方向键“↑”“↓”可以查看之前执行过的命令。
② 执行命令:history,从结果可以看到history命令的用途是: 查看先前所有在终端输入过的命令 。
3、常用系统基础命令(参考教材26-29)
(1)终端命令格式为:
命令关键字 [-选项] <参数> 。(2)命令帮助
①man :显示命令的用户手册。
man [选项] <命令名>②help :查看命令帮助。
help [选项] <命令名>③info :获取命令的详细使用方法
info [选项] <命令名>④“-h”、“--help”选项 :为用户查询该命令的使用方法和选项。
命令名 -h / --help (3)查看当前工作目录:pwd
pwd①使用root用户登录系统,查看root用户登录后的工作目录。
②使用admin用户登录系统,查看admin用户登录后的工作目录。
③观察两次登录后默认的工作目录可以知道,不同用户登陆之后默认的工作目录是在: 用户的home目录 。
(4)查看指定目录或当前目录下的文件信息:ls
ls [选项] <目录或者文件>
常用选项:
-a 显示当前目录下所有文件和目录。
-A 显示所有文件和目录,但不显示当前目录“.”和上层目录“..”。
-d 显示目录本身而不是目录下的内容。
-l 使用详细格式列表,显示类型、权限、所属用户、组等信息。①不带任何参数执行ls命令。
②使用-a选项执行ls命令,-a选项可以显示出: 所有内容,包括隐藏 。
③使用-l选项执行ls命令,-l选项可以显示出: 长格式详细信息 。
④执行ll命令,ll命令是 ls -l 命令的别名。
(5)日期与时间
① date //查看/修改日期时间。
② cal //按指定格式显示日历。
常用选项:
-s 把Sunday 周日作为每周的第一天
-m 把Monday周一作为每周的第一天
-y 显示当年的日历(6)系统及用户信息
① uname //查看主机操作系统的内核版本主机信息等。
常用选项:
-a或--all 显示全部的信息。
-m或--machine 显示电脑类型。
-n或--nodename 显示在网络上的主机名称。
-r或--release 显示操作系统的发行编号。
-s或--sysname 显示操作系统名称。
② whoami //查看自身用户。
③ id //查看当前用户的用户id和组id。
④ who //查看当前登录系统的用户。(7)重启与关机
① shutdown //常用的关机命令,提供定时关机、重启、取消关机等功能。
常用选项:
-h 关机
-r 重启
now 立即执行关机或重启
+时间 指定在多少分钟后关机
② poweroff //关机 (类似 shutdown -h now)。
③ reboot //重启系统 (类似shutdown -r now)。
③ init //通过更改系统的运行级别来实现重启或关机。
常用选项:
0 关机
6 重启实训3:管理文件与目录
1、Linux的目录结构(参考教材P46)

图1 麒麟操作系统的目录树
(1)Linux使用 树 形结构来管理文件系统。
(2)整个文件系统的最顶层目录称为 根目录 ,表示为 / 。
(3)系统默认的目录有特定的内容,有些目录很重要,在操作时应注意不要误操作。了解以下常用系统目录的内容:
/dev 设备文件
/etc 配置文件
/home 用户的家目录
/mnt 临时挂载点
2、绝对路径与相对路径(参考教材P47)
(1)绝对路径是从根目录“/”开始到指定文件或目录的路径。总是从根目录“/”开始,通过符号“/”来分割目录名。 根据图1所示目录结构,写出目录alice的绝对路径: /home/alice 。
(2)相对路径是指从当前目录出发,到达指定文件或目录的路径,当前目录一般不会出现在相对路径中。 可以配合特殊目录“.”和“..”来灵活切换路径。“.”表示当前目录,“..”表示上一级目录。根据图1所示目录结构,写出以下相对路径:
①当前位置位于目录etc ,写出目录alice的相对路径: ../home/alice 。
②当前位置位于目录eve,写出目录bob的相对路径: ../bob 。
③当前位置位于目录 / ,写出目录usr的相对路径: usr 或 ./usr 。
3、工作目录和切换目录(参考教材P49-50)
(1)查看当前工作目录:pwd命令
pwd(2)切换目录:cd
cd <目录路径>①使用绝对路径,改变工作目录至 /var/spool/mail下。
②回到上级目录。
③使用相对路径,改变工作目录至 /var下的子目录log。
④不带任何参数执行cd命令,查看执行后的工作目录,可知当不指定路径参数执行cd命令时会自动切换至 当前用户的家 目录。
(3)查看当前路径下的目录或文件:ls
ls [选项] <目录或者文件>
常用选项:
-a 显示当前目录下所有文件和目录。
-A 显示所有文件和目录,但不显示当前目录“.”和上层目录“..”。
-d 显示目录本身而不是目录下的内容。
-l 使用详细格式列表,显示类型、权限、所属用户、组等信息。
4、文件/目录的创建和删除(参考教材P49-50)
(1)创建文件:touch
touch <文件名1> <文件名2> …①在当前目录下创建a.txt、 b.txt、 c.txt、 d.sh、 e.tar五个文件。
②使用ls命令验证结果。
③文件扩展名是文件名的一部分,以点(.)分个,可以指示文件的类型。
查阅教材P48: .txt表示 文本 文件 , .sh表示 shell脚本 文件。
(2)创建目录:mkdir
mkdir [选项] <目录名>
常用选项:
-p 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。①在根目录下创建dir1和dir2两个目录。
②使用ls命令验证结果。
③创建位于目录/dir3/dir4下的dir34目录,如果其上层目录不存在,一并创建上层目录。
④使用ls命令验证结果。
(3)删除目录:rmdir
rmdir [选项] <目录名>
常用选项:
-p 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。①删除空目录/dir1。
②级联删除空目录/dir3/dir4/dir34。
③使用ls命令验证结果。
(4)删除文件或目录:rm
rm [选项] <文件或目录>
常用选项:
-i 删除既有文件或目录之前先询问用户。
-f 强制删除文件或目录,不进行提示。
-r 递归处理,将指定目录下的所有文件及子目录一并处理。①删除文件e.tar。
②删除目录/dir2,不需要提示。
③使用ls命令验证结果。
5、文件的复制和移动(参考教材P50-51)
(1)复制文件/目录:cp
cp [选项] <源文件/目录> <目标文件/目录>
常用选项:
-r 递归处理,将指定目录下的所有文件与子目录一起处理。
-i 复制前进行交互式确认。
-l 对源文件建立硬链接,而非复制文件。
-s 对源文件建立符号链接,而非复制文件。①将文件d.sh复制到/tmp目录下。
②将d.sh复制到当前目录下,复制出来的目标文件名为copyd.sh。
(2)移动或重命名文件/目录:mv
mv [选项] <源文件或目录> <目标文件或目录/新名称>
常用选项:
-i 移动或重命名前进行交互式确认。
-b 在目标文件已存在时进行备份。
-f 若目标文件(目录)与现有的文件(目录)重复,直接覆盖现有的文件(目录),不进行询问。①将文件copyd.sh移动到/tmp目录下。
②mv命令除了能实现文件/目录的移动外,还能实现文件/目录的重命名。
将c.txt改名为renamec.bak。
6、查看文件内容(参考教材P51-53)
(1)查看和连接文件内容:cat
cat [选项] <文件名>
常用选项:
-n 显示行号。
-b:显示非空行的行号。①使用cat命令查看/etc/passwd文件的内容,要求显示行号。
②cat命令除了可以显示文件内容外,还可以向文本文件写入信息。
使用cat命令向a.txt写入一行信息:hello wangxiaoming (学生姓名)。
使用cat命令验证结果。
(2)逐页查看文件内容:more 和less
more <文件名>
less <文件名>
常用操作:
空格键 向下翻页
Enter键 向下滚动一行
q键 退出查看①使用more命令查看anaconda-ks.cfg文件的内容。
②使用less命令查看anaconda-ks.cfg文件的内容。
(3)查看文件的开头或结尾:head和tail
head <文件名>
tail <文件名>
常用选项:
-n 数字 指定显示行数①在屏幕上显示/etc/passwd文件前3行内容。
②在屏幕上显示/etc/passwd文件后5行内容。
7、创建硬链接和软连接:ln(参考教材P60-61)
ln [选项] <源文件或目录> <链接名称>
选项:
-s 对源文件建立符号连接(软链接),而非硬连接。(1)硬链接
①使用ll命令查看a.txt的详细信息,此时a.txt的链接数为 1 。
②为a.txt创建硬链接,链接名为aaa。
③查看以上两个文件的详细信息:ll a* ,可以发现a.txt与aaa属性完全一致,其链接数加1。这种称为硬链接,两个文件名指向硬盘的同一块存储空间,对其中一个文件的修改将影响另一个文件。
(2)软链接
①为b.txt创建符号链接,链接名为bbb。
②查看bbb的详细信息,可以看到文件类型是l,表明这是一个符号连接。软连接也称符号链接,类似于快捷方式。
实训4:管理文件与目录权限
1、理解Linux系统的权限(参考教材P55)
(1)Linux系统中文件的权限有以下几种,可以通过 字符 或 数字 来表示:
①读取,用字符 r 来表示,对应数值 4 ;
②写入,用字符 w 来表示,对应数值 2 ;
③执行,用字符 x 来表示,对应数值 1 ;
④“-”表示不具有该项权限。
(2)这几种权限编为3组,分别是 文件的 所有者 (u)、文件的 所属组 (g)以及
其他用户 (o)对文件的 读 、 写 、 执行 等操作权限。
2、查看文件/目录的权限信息(参考教材P56-57)
(1)使用root用户登录系统。
(2)使用touch命令,在根目录下创建文件a.txt 。
(3)使用ll命令,查看a.txt的详细信息。
① 根据命令运行结果,a.txt的所有者是 root,所属组是 root。
② 第1个字符 表示文件类型,“-”说明a.txt是一个 普通文件。
③ 第2-10个字符表示的是该文件/目录的权限,每三位一组,分别代表 ugo三组权限。
也即:root用户对a.txt拥有的权限是: 读、写 (rw-),
root用户组对a.txt拥有的权限是: 只读 (r--),
其他用户对a.txt 拥有的权限是: 只读 (r--)。
④ 用数字来表示a.txt的权限应表示为: 644。
(4)stat命令用于显示文件或目录的详细信息,包括权限信息。
stat <文件或者目录>(5)切换用户后使用vi命令尝试编辑/a.txt ,可以观察到:其他用户对该文件的权限为 只读。
3、更改文件/目录的权限 (参考教材P57-58)
chmod [选项] <对权限的设定> <文件或者目录>
常用选项:
-R 递归处理,当操作项是目录的时候,把目录中所有的文件以及子目录的权限全部修改。
(1)再次切换root用户登录系统。
(2)使用符号表示法,给/a.txt的 所属组(g)及其他用户(o) 增加“写” 权限。 查看验证/a.txt的权限信息。
(3)使用符号表示法,给/a.txt的 其他用户(o) 删除 “读写” 权限。查看验证/a.txt的权限信息。
(4)使用符号表示法,设定家目录下 anaconda-ks.cfg文件的所有者(u) 权限为:读、写、执行 ,所属组(g) 权限为:读、写 ,其他用户(o)权限为:只读。查看验证 anaconda-ks.cfg的权限信息。
(5)使用数字表示法,设定anaconda-ks.cfg文件的 所有者(u) 权限为:读、写 ,所属组(g) 和 其他用户(o)权限为:只读。查看验证 anaconda-ks.cfg文件的权限信息。
(6)使用数字表示法,设定/home目录及其目录下的文件和子目录权限: 所有者(u) 权限为:读、写、执行 ,所属组(g) 和 其他用户(o)权限为:只读。查看验证 /home目录的权限信息。
4、更改文件/目录的所属用户和组(参考教材P58)
(1)更改文件目录所属用户:chown
chown <用户名> <文件或者目录>
常用选项:
-R 递归处理,当操作项是目录的时候,把目录中所有的文件以及子目录的拥有者全部修改。
①在根目录下创建文件b.txt。
②使用ll命令,查看b.txt的详细信息,文件的所属用户是当前用户root。
③使用useradd命令创建一个名为wangxiaoming的用户:useradd wangxiaoming 。
④使用chown命令,将b.txt的所属用户更改为用户 wangxiaoming 。查看验证b.txt的所属用户信息。
(2)更改文件目录所属组:chgrp
chgrp <组名> <文件或者目录>①使用groupadd命令创建一个名为 class3的用户组: groupadd class3 。
②使用chgrp命令,将b.txt的所属组更改为用户组class3 。查看验证b.txt的所属组信息。
(3)同时变更文件目录的所属用户和所属组chown命令可以同时更改一个文件/目录的所属用户和所属组。
chown <用户名:用户组> <文件或者目录>①使用chown命令,将b.txt的所有者变更回root用户,属组变更回root用户组。再次查看验证b.txt的所属用户和所属组信息。
5、更改默认权限(权限掩码):umask
umask 权限掩码(1)Linux系统在建立新的文件或目录时,有一个默认权限,默认权限与umask(权限掩码)有关。
(2)使用umask命令,以数字形式查看系统当前的权限默认值,当前umask值是 022。
(3)umask值指定的是 需要减掉的权限。
(4)对于文件来说,文件默认没有执行权限,所以 文件的满权限是 666(数字表示)。
(5)使用touch命令创建文件c.txt ,查看c.txt的权限是 644(数字表示)。
也即:一个文件的权限 = 文件满权限 - umask 。
(6)目录的满权限是 777(数字表示)。
(7)使用mkdir命令创建文件夹 dir ,查看dir的权限是 755(数字表示)。
也即:一个目录的权限 = 目录满权限 - umask 。
(8)使用umask命令,更改系统的umask值为 026 。
(9)更改umask值后,新创建文件的默认权限应为:640 。
(10)使用touch命令创建d.txt,查看d.txt的权限进行验证。
6、隐藏权限(参考教材P58-59)
(1)除常规权限(读写执行)外,还有一些特殊权限可以应用于文件和目录:SUID、SGID和黏滞位。
①使用touch命令创建hidden.txt 。
②使用stat命令查看该文件的权限信息:当前权限为 644,也即默认情况下 不具备(填写:具备/不具备)特殊权限。
(2)SUID :当文件拥有SUID权限时,执行该文件的用户将以 文件所有者 的身份执行。
chmod 4xyz(xyz为常规权限的数值) <文件或者目录> //设置SUID
chmod +s <文件或者目录> ①为hidden.txt文件设置SUID权限。
②查看设置后的文件权限:数值表示为 4644,此时 文件所有者 的权限字符表示为 rwS。
(3)SGID :当文件拥有SGID权限时,执行该文件的用户将以 文件所属用户组 的身份执行。
chmod 2xyz(xyz为常规权限的数值) <文件或者目录> //设置SGID①为hidden.txt文件设置SGID权限。
②查看设置后的文件权限:数值表示为 2644,此时 文件所属用户组 的权限字符表示为 rwS。
(4)黏滞位 :拥有该权限的文件或目录,只有 文件所有者 才能删除自己的文件。
chmod 1xyz(xyz为常规权限的数值) <文件或者目录> //设置黏滞位
chmod +t <文件或者目录> ①创建目录hide。
②为目录hide设置黏滞位权限。
③查看设置后的目录权限:数值表示为 1755,此时 其他用户 的权限字符表示为 r-t。
7、扩展任务
1、/root下有一文件anaconda-ks.cfg,复制该文件到当前目录,保留权限以及所属用户、所属组不变,并命名为a.bak。 新建目录pwa 、pwb 、pwc 、 pwd 。
2、查看文件a.bak 和目录pwa 、pwb 、pwc 、 pwd 的权限。
3、使用字符写法更改a.bak的权限:给用户组增加读写权限,其他用户增加读权限。
4、使用字符写法 更改pwa的权限:删除其他用户的读取和执行权限。
5、使用字符写法 更改pwb的权限:用户组权限为读写执行,其他用户无权限。
6、使用数值写法 更改pwc的权限:文件拥有者可以读取和执行,用户组和其他用户无权限。
7、将文件a.bak的所属用户 修改为wang (先新建用户:useradd wang)。
8、将文件a.bak的所属组 修改为 teacher (先新建用户组:useradd teacher)。
9、修改权限掩码为002。
10、为目录pwd设置 SUID和黏滞位权限。
实训5:使用VIM文本编辑器
1、Linux系统的文本编辑器
(1)Linux命令行状态下常常需要编辑配置文件或进行shell编程、程序设计等,此时需要使用编辑器。 Linux下包含很多不同的编辑器,VI是其中功能较为强大的全屏幕文本编辑器(所有Linux发行版本都内置VI),VIM是VI编辑器的加强版,保留了VI的快捷键操作方式,同时引入许多新功能和改进,使其更灵活和功能丰富。
(2)除VI和VIM外,还有一些编辑器也在Linux系统中被广泛利用,可以满足不同用户的需求: 如 Nano 、EMAS 、Sublime Text等。
2、启动VIM编辑器 (参考教材P64 )
(1)启动VIM编辑器方法如下:
vim //新建一个未命名的文本文件,退出时必须指定文件名
vim <文件名> //指定文件名,新建(文件不存在时)或打开同名文件(2)启动VIM编辑器,指定新建文件名为a.txt 。
(3)进入VIM编辑器后的默认模式是 命令 模式。该模式下,键盘输入的字符都被当做 命令 来解释。
3、模式切换 (参考教材P64-65)
(1)在命令模式下,按下键盘的i键/a键/o键,使VIM编辑器进入 插入 模式。
(2)在插入模式下,输入以下内容:

(3)输入完毕后,按下键盘的Esc键 , 返回命令模式。
(4)在命令模式下输入“:”,进入 末行 模式。
(5)输入wq 或 x ,保存退出。
(6)使用cat命令查看文件a.txt的内容。
(7)在笔记本画出 模式切换示意图 。
4、常用快捷键及命令操作(参考教材P65-68)
VIM的命令遵循 “量词+动词+名字”组合。以下操作中的n为量词,即数字。
(1)光标移动 (查阅教材P65 表5.1)
①用VIM编辑器打开a.txt,在命令模式下使用“↑”“↓”“←””→“或h、j、k、l键可以移动光标。
②输入:G ,光标可以快速移动到末行。
③输入:nG ,如 3G ,光标可以快速移动到第3行行首。
④输入:n<Enter>, 如 2<Enter> ,光标会向下移动2行。
⑤输入:gg ,光标移动到第1行(相当于1G)。
(2)复制、粘贴、删除、撤销(查阅教材P68 表5.3)
①命令模式下,光标定位到is所在的行。
按下“yy”键,此时将复制光标所在行。
按下“p”键,可以在光标所在行的下一行粘贴所复制的内容。
②光标定位到第二个world所在的行。
按下“nyy”键,如2yy ,此时将复制光标所在行往下数2行。
按下“p”键,可以在光标所在行的下一行粘贴所复制的内容。
③光标定位到hello所在的行。
按下“x”键,可向后删除一个字符。
④光标定位到is所在的行。
按下“dd”键,将is行删除至剩余一行。
⑤按下“u”键,可撤销上一步操作。可以多次按“u”键连续撤销多步操作。
(3)查找字符(查阅教材P68 表5.5)
①在命令模式下输入: /world ,回车,编辑器将在文档中查找world字符,并将光标定位到第一个world 单词的首字母处。
②按下n键,光标会移到下一个world 单词的首字母。
③继续按下n,会一个个查找文中所有的world字符,查询完毕会回到文首继续查找。
(4)设置行号(查阅教材P68 表5.4)
①按下“:”号进入末行模式,输入“set nu”,在每行行首加上行号。
②输入“: n(数字)”可以快速移动到第n(数字)行。
③取消行号。
(5)查找替换(查阅教材P68 表5.5)
n1,n2s/被替换字符/新字符/gc
说明:
(1)n1,n2为查找范围,
如
1,10 表示查找第1行到第10行。
1,$ 表示第1行到最后一行。
% 表示整个文档。
特殊写法
(2)g表示全局替换(global)。
(3)c表示询问确认(confirm)。 ①查找文本内容中的ideal,替换为wish。
②查找文本内容中的world,替换成classX(X为班别),且在替换前询问用户确认替换。
(6)保存与退出(查阅教材P68 表5.4)
①保存退出:编辑完成后,按下“:”号进入末行模式,输入“w”保存文件。
或输入“wq”保存并退出,
或输入“q!”不保存修改强行退出。
②另存为:使用vi编辑器,将文件a.txt的文本内容另存到 a1.txt 。使用cat命令查看a1.txt。
③数据追加到其他文件:
Ⅰ.使用VIM编辑器创建文件b.txt ,在b.txt中输入:i am xxx(姓名),保存退出。
Ⅱ.使用VIM编辑器将a.txt的文本内容追加到b.txt中。
Ⅲ.使用cat命令查看b.txt。
5、文件处理 (参考教材P54-55)
(1)统计文件中的字数、行数和字符数
wc [选项] <文件名>
常用选项:
-l 仅显示行数
-w 仅显示字数
-c 仅显示字符数
①统计文件a.txt 的字数、行数、字符数。
(2)排序
sort [选项] <文件名>
常用选项:
-r 按降序排序
-n 按数字顺序排序
-u 去除重复行
①对文件/etc/passwd的文本行进行升序排序。
②对文件a.txt 的文本行进行降序排序,并去除重复行。
(3)去除重复行
uniq [选项] <文件名>
常用选项:
-d 仅显示重复行
-u 仅显示非重复行①去除文件a.txt中的重复行并只显示非重复行。
(4)比较文件差异
diff [选项] <文件1> <文件2>
常用选项:
-u 以统一格式输出差异
-q 仅显示是否不同,不显示详细差异①比较文件a.txt 和 b.txt的差异。
②比较文件a.txt 和 b.txt ,仅显示是否不同。
6、扩展任务
(1)在当前目录中通过VIM命令新建wol文件。
(2)进入wol文件后,输入一行文字 I am a student ,保存退出。
(3)复制/etc/man_db.conf 文件到当前目录。
(4)打开复制到当前目录的man_db.conf文件,将光标移动到行尾,再将光标移动到行首。
(5)将光标移动到21行,删除5行。
(6)撤销刚才的操作。
(7)将光标移动到11行,复制10行。
(8)将复制的内容粘贴到文章末尾。
(9)设定行号,移动到第58行。
(10)移动到第1行,向下查找local这个字符串。
(11)将文档中的man字符串(全部)改写为大写MAN字符串。
(12)全部复原。
(13)将这个文件另存为man.test.config文件。
(14)保存退出。
实训6:管理用户和组
1、了解Linux用户账户(参考教材P36)
(1)Linux系统中有3种不同类型的用户,这些用户通过用户ID(UID)进行区分:
① 超级 用户,即root。拥有系统的最高权限,可以不受限制的操作任何文件和命令。
② 系统 用户,即虚拟用户。这类用户无法登录系统,一般用来管理或者执行特定的任务使用,比如:ftp、mail、apache、bin、daemon、nobody等。
③ 普通 用户,由root用户创建。一般可以登录系统,权限有限,只能操作拥有权限的文件和目录,管理自己的进程。
(2)用户账户包含以下常见属性:用户名、用户ID、家目录、登录shell、所属用户组、所属组ID。
(3)为方便管理,特别是在权限方面,可以将具有相同特征的用户划分为一个用户组。
每个用户至少属于一个用户组,用户可以加入多个组,但是只能属于一个 主要 组,其他组称为该用户的 附加 组。
2、了解用户帐号相关配置文件(参考教材P37-38)
(1)在麒麟操作系统中,用户账户信息存储在2个主要文件中:/etc/passwd和/etc/shadow。
(2)使用cat命令查看用户帐号文件 /etc/passwd 。
该文件中每一行描述一个用户配置信息,通过“:”隔开。字段从左往右依次代表:用户名、口令、UID、GID、用户全称、用户主目录和登录shell。
超级用户root的UID是 0 。
(3)使用cat命令查看用户口令文件 /etc/shadow 。
该文件中每一行代表一个账号信息,通过“:”隔开。字段从左往右依次代表:账户名称、加密后的密码、最近改动密码日期、密码不可被变更的天数、密码需要重新变更的天数、密码过期预警天数、密码过期的宽恕时间、账号失效日期、标志。
(4)使用cat命令查看组账号文件 /etc/group 。
该文件中每一行描述一个用户配置信息,通过“:”隔开。字段从左往右依次代表:用户组名、组口令、组ID和附加组成员列表。用户组root的组ID是 0 。
(5)使用cat命令查看用户组口令文件 /etc/gshadow 。
该文件中每一行描述一个用户配置信息,通过“:”隔开。字段从左往右依次代表:用户组名、用户组口令、用户组的管理者、附加组成员列表。
3、创建用户和用户组
(1)创建用户:useradd
useradd [选项] <用户名>
常用选项:
-d 指定家目录
-g 指定用户所属的主要组,后接GID或者组名
-G 指定用户所属的附加组,后接GID或者组名
-s 指定登录shell
-u 指定用户的UID①添加一个名为wang 的用户。
②添加一个名为yang的用户,属于root组。
③添加一个名为huang的用户,附加root组,家目录为/huang 。
④使用tail命令,分别查看用户配置文件“/etc/passwd”和“/etc/shadow”(仅看最后三行)。从配置文件可以观察到:新添加的三个用户对应的口令部分为 !! ,也即这三个用户还没有设置口令。
⑤使用ls命令查看/home目录下的内容,可以观察到用户wang和yang的家目录。也即:创建用户时若未指定家目录,系统将自动在/home目录下为用户创建家目录。
(2)添加用户组:groupadd
groupadd [选项] <用户名>
常用选项:
-g 指定用户组的GID①添加一个名为ftpusers的用户组。
②使用tail命令,查看组配置文件“/etc/group”仅看最后三行 。
从配置文件可以观察到新添加了3个用户组:wang、huang、ftpusers。这是因为:当创建用户时,若没有指定用户的主要组,系统会自动同步创建与该用户同名的用户组。
用户组ftpusers的组ID(UID)是 。
(3)使用cat命令,查看组配置文件“/etc/group”中包含用户huang的信息。
从配置文件可以观察到:用户组root的附加组成员列表中包含用户huang。原因是创建用户huang时指定了该用户的附加组为root。
4、管理用户密码
(1)设置用户密码:passwd
passwd [选项] [用户名]
常用选项:
-d 删除用户口令,用户登录系统不需要口令,只有root可以执行
-l 锁定用户账号,只有root可以执行
-u 解锁被锁定的用户账号,只有root可以执行①设置用户wang和用户yang的口令(必须符合密码策略:8位以上、包含数字/大写字母/小写字母/特殊字符 至少3种)。
②锁定用户wang。
③重启系统,在系统登录界面可见用户列表出现huang和yang。尝试使用用户wang登录。
(2)为保持系统安全,操作系统通常会定义密码策略,包括密码的长度和复杂性等。麒麟操作系统的密码策略可在/etc/security/pwquality.conf中配置。
该配置文件的常用配置项说明如下:
①使用VIM编辑器打开密码策略配置文件/etc/security/pwquality.conf ,按照以下要求修改配置文件:
a.登录或修改密码失败时允许重试5次,
b.密码的最小长度为6 ,
c.密码组成至少拥有的字符种类为2 。
②修改密码策略后,设置用户huang的口令为xxjs2025。
(3)强制要求用户更改密码:chage
chage [选项] [用户名]
常用选项:
-d 最近一次密码设置时间(可以是距离1970.1.1后的天数,也可以是YYYY-MM-DD格式的日期),
若为0表示用户在下次登录时必须更改密码。①强制用户huang在下次登录系统时必须更改密码。
5、管理用户和组
(1)修改用户信息:usermod
usermod [选项] <用户组名>
常用选项:
-p 修改用户密码
-d 修改用户家目录
-g 修改用户的主要组
-G 修改用户的附加组
-a 与-G选项结合使用,将用户添加到-G选项指定的附加组中
-l 指定用户的新登录名。①修改用户yang的登录名称为yanggg 。
②在/home目录下新建目录huang,修改用户huang的家目录为/home/huang。
③将用户wang添加到ftpusers组中。
④使用cat命令,查看用户文件/etc/passwd和/etc/group,检验以上修改情况。
(2)修改用户组信息:groupmod
groupmod [选项] <用户组名>
常用选项:
-g 指定用户组的GID。
-n 指定用户组的名称。①修改用户组ftpusers的组名为shareusers ,组ID更改为1008。
②使用tail命令,查看组配置文件“/etc/group”仅看最后一行,可以观察到新的组名shareusers,组ID为1008。
(3)管理组内用户:gpasswd
gpasswd [选项] <用户名> <用户组名>
常用选项:
-a 添加用户到用户组
-d 将用户从用户组中移除。①将用户huang添加到用户组shareusers中。
②使用groups命令,查看用户huang的用户组情况。可以观察到:用户huang属于 个组,主要组为 huang ,附加组为 root, shareusers 。
(4)删除用户:userdel
userdel [-r] <用户名>
常用选项:
-r 在删除该账户的同时,一并删除该账户对应的主目录。①删除用户yanggg,同时将家目录一并删除。
②使用ls命令查看用户yang的家目录/home/yang,可以观察到:不存在该目录。
(5)删除用户组:groupdel
groupdel <用户组名>① 删除用户组shareusers(成功)。
② 删除用户组huang(失败,原因是 该组是用户 huang 的主要组 )。
6、切换用户身份:su
su [选项] <用户名>
常用选项:
-l 重新加载环境变量
如同重新登录一样,环境变量(如HOME、SHELL和USER等)以该使用者(USER)为主,并且工作目录也会改变。如果没有指定USER,缺省情况是root。(1)使用root用户登录系统,查看登录后的工作目录。
(2)创建用户tom,并为用户tom设置密码。
(3)使用su命令,将当前用户身份切换为tom。切换成功后,查看当前工作目录为 /root 。
(4)使用su命令,再次切换用户身份为tom,同时重新加载环境变量。
切换成功后,查看当前工作目录为 /home/tom 。
7、以指定用户身份运行命令:sudo
sudo [选项] <命令>
常用选项:
-u user 以指定的用户身份运行命令(1)使用su命令将用户身份切换到tom。创建名为jerry的用户:失败。
(2)使用sudo命令,以root用户身份创建名为jerry的用户:失败。
(3)将用户身份切换回root,且重新加载环境变量,使用visudo命令编辑/etc/sudoers配置文件。
(4)在第100行下方添加如下配置信息:tom ALL=(root) /sbin/useradd ,保存,退出。

(5)身份再次切换到tom。使用sudo命令,创建名为jerry的用户:成功。
(6)查看用户配置文件/etc/passwd(仅看最后1行),可以看到新创建的用户jerry。
(7)身份再次切换到root。使用cat命令查看sudo的日志信息 /var/log/secure ,可以看到日志文件中记录了 普通用户tom使用sudo命令创建用户jerry 的过程。
8、扩展任务
(1)创建一个新的用户账户,命名为 testuser1。
(2)修改 testuser1 的家目录为 /home/testuser1。
(3)更改 testuser1 的登录 Shell 为 /bin/bash。
(4)为 testuser1 设置密码,并确保密码符合复杂性要求。
(5)验证 testuser1 的用户属性是否正确。
(6)创建一个新的组,命名为 testgroup1。
(7)修改 testgroup1 的 GID 为 1001。
(8)删除 testuser1 用户账户,但保留用户文件。
(9)将 testuser1 用户添加到 testgroup1 组。
(10)删除 testgroup1 组。
实训7:管理磁盘
1、(实训6补充)以指定用户身份运行命令:sudo
sudo [选项] <命令>
常用选项:
-u user 以指定的用户身份运行命令(1)创建用户tom,为用户tom设置密码。
(2)使用su命令将用户身份切换到tom。创建名为jerry的用户:失败。
(3)使用sudo命令,以root用户身份创建名为jerry的用户:失败。
(4)将用户身份切换回root,且重新加载环境变量,使用visudo命令编辑/etc/sudoers配置文件。
(5)在第100行下方添加如下配置信息:tom ALL=(root) /sbin/useradd ,保存,退出。

(6)身份再次切换到tom。使用sudo命令,创建名为jerry的用户:成功。
(7)查看用户配置文件/etc/passwd(仅看最后1行),可以看到新创建的用户jerry。
(8)身份再次切换到root。使用cat命令查看sudo的日志信息 /var/log/secure ,可以看到日志文件中记录了 普通用户tom使用sudo命令创建用户jerry 的过程。
2、了解Linux的设备命名及磁盘管理方式(参考教材P228-234)
(1)在Linux系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称,在Linux系统内核中的udev设备管理器会自动把硬件名称规范起来。常见的设备命名如下表所示:
(2)磁盘是计算机系统用于存储数据的关键硬件之一。一块磁盘能够被系统使用,需要经过以下步骤:分区 、格式化(创建文件系统) 、挂载 。(查阅教材P234)
(3)Linux操作系统采用MBR模式对磁盘进行分区。MBR模式下的磁盘分区有主 分区和 扩展 分区 2种,数目之和不能大于4个。扩展 分区必须再进行分区,分为逻辑分区后才可使用,逻辑分区的数量可以有很多,由文件系统类型决定。(查阅教材P229)
(4)使用“fdisk -l”命令,查看当前Linux系统的磁盘情况。
可以观察到:当前系统中有一个 扩展 设备,该设备有 2-4 个分区。
3、添加硬盘
(1)关闭虚拟机。在虚拟机窗口中点击“编辑虚拟机设置”,弹出“虚拟机设置”对话框。
(2)点击“添加”—>选中硬件类型“硬盘”—>选中虚拟磁盘类型“SCSI”—>创建新虚拟磁盘—>指定磁盘容量20GB—>点击“完成”。

4、磁盘分区:fdisk(参考教材P234-236)
fdisk -l [<磁盘名称>] //列出分区表
fdisk <磁盘名称> //更改分区表(输入m获取更改分区表的操作菜单)(1)开启虚拟机。
(2)使用“fdisk -l”命令,查看当前Linux系统的磁盘情况。
可以观察到:新添加的磁盘命名为 /dev/sdb ,目前没有经过分区和格式化。
(3)使用“fdisk”命令对新磁盘进行分区管理,进入分区管理会话,(输入m获取命令帮助)。
(4)创建编号为1 、大小为5GB的主分区:
①输入“n”,表示添加新分区;
②输入“p”,表示添加主分区;
③输入“1”,表示分区号为1;
④输入回车,表示使用默认的第一个扇区;
⑤输入“+5G”,表示磁盘大小为5GB;
⑥完成。

(5)参考以上步骤,按下表要求,在新磁盘上创建如下分区:

(6)输入“p”,查看当前分区情况。
(7)输入“w”,将分区表写入磁盘并退出。
5、创建文件系统:mkfs 、 mke2fs(参考教材P236-237)
(1)文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。Linux内核支持十多种不同类型的文件系统,查看当前Linux系统支持的文件系统类型:ls /lib/modules/4.19.90-89.11.v2401.ky10.x86_64/kernel/fs/ 。
(2)对于麒麟操作系统,经常使用的有swap、ext3、ext4和XFS文件系统。(3)使用“mount |grep /dev/sda "命令查看当前系统磁盘(/dev/sda)的文件系统类型是:xfs 。
(4)按下表要求在设备/dev/sdb的分区上创建文件系统:

命令一:mkfs
命令格式(1与2同效):
(1)mkfs.<文件系统类型> <分区名>
(2)mkfs -t <文件系统类型> <分区名>
常用选项:
-f 强制执行
-b 指定块文件的大小,比如 -b 2048表示指定块大小为2048B(即2KB)①使用mkfs命令,在主分区1创建xfs文件系统。
②使用mkfs命令,在主分区2创建ext4文件系统。
命令二:mke2fs
mke2fs <分区名> //默认创建ext2文件系统
常用选项:
-j 创建ext3文件系统③使用mke2fs命令,在逻辑分区5创建ext2文件系统。
④使用mke2fs命令,在逻辑分区6创建ext3文件系统。
6、挂载文件系统:mount(参考教材P237-238)
mount [选项] <设备名称> <挂载点目录>
常用选项:
-t 指定挂载的文件系统类型
-r 以只读方式挂载(1)格式化完成后的分区必须挂载到Linux文件系统中才能进行读写操作。
(2)挂载 是指 将存储设备的内容映射到指定目录,该目录称为挂载点。访问挂载点即可实现对设备的访问。
(3)创建/data1 、/data2 、/data3 、/data4 共4个目录,作为挂载点。
(4)按下表要求将分区挂载到对应挂载点:

(5)查看挂载情况
①使用mount命令查询/dev/sdb的挂载情况(提示:使用管道符结合grep命令搜索)。
②使用df命令查询/dev/sdb的挂载情况,同时输出文件系统类型,并以1000字节为换算单位来显示磁盘空间(提示:使用管道符结合grep命令搜索)。
df [选项]
常用选项:
-h 以容易阅读的方式显示
-H 以1000字节为换算单位来显示
-t <文件系统类型> 只显示指定类型的文件系统
-T 输出时显示文件系统类型③使用lsblk命令查询/dev/sdb的挂载情况。
lsblk7、卸载文件系统:umount (参考教材P241)
umount [选项] <设备名/挂载点目录名>
常用选项:
-f 强制卸载(1)使用挂载点卸载/dev/sdb5。
(2)使用设备名卸载/dev/sdb6。
(3)查看/dev/sdb的挂载情况。
8、自动挂载(参考教材P239)
(1)使用mount命令挂载的文件系统,当系统重启后需要重新执行mount命令才可以挂载使用。
(2)若希望文件系统在重启时能够自动挂载,需要修改/etc/fstab文件,配置共6列内容:
第一列:需要挂载的设备(可以是分区名,也可以是实际分区的卷标)。
第二列:挂载点。
第三列:此分区的文件系统类型。
第四列:挂载选项,用于设置挂载的参数。
第五列:文件系统是否需要dump备份,1是需要,0是不需要。
第六列:系统启动时,是否使用fsck磁盘检测工具检查文件系统。1需要,0不需要,2跳过。
(3)使用VI编辑器修改/etc/fstab文件,设置自动挂载:将/dev/sdb1分区以defaults方式挂载到/data1挂载点,不使用dump,开机不检查文件系统。
!!!修改配置文件前建议先做系统快照,防止系统因配置文件错误 重启后崩溃!!!
(4)重启系统后查看/dev/sdb的挂载情况。
实训8:管理磁盘配额
1、理解磁盘配额
(1)磁盘配额:限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。
(2)可以分别针对用户(user)、群组(group)、单一目录(project)进行磁盘配额。
(3)可以限制inode(可以创建文件或者目录的数量)和block(可以存储的容量大小)的用量。
(4)限制类型:
软限制:最低限制容量,可以被超过,但会有警告信息,超过的部分会保存到宽限时期到期,
硬限制:绝对不能被超过限制。达到硬限制时,系统会禁止继续增加新的文件。
(5)宽限时间:当用户使用的空间超过了软限制但还没达到硬限制,在这个宽限的时间到期前必须将超过的数据降低到软限制以下,当宽限时间到期,系统将自动清除超过的数据。
2、添加新磁盘
(1)为CentOS系统添加一块大小为10G的SCSI硬盘。
(2)在该硬盘上划分大小为10G的主分区。
(3)将该分区格式化为xfs文件系统。
(4)新建目录/data1 ,将该分区挂载到/data1下。
(5)使用mount命令查看挂载情况。
3、配置分区支持磁盘配额
(1)使用VIM编辑器修改/etc/fstab文件,将新创建的磁盘分区以默认挂载选项和开启用户配额、组配额的形式 挂载到/data1挂载点,使用dump功能备份系统,启动时跳过磁盘检测 。
第一列:需要挂载的设备(可以是分区名,也可以是实际分区的卷标)。
第二列:挂载点。
第三列:此分区的文件系统类型。
第四列:挂载选项,用于设置挂载的参数。
第五列:文件系统是否需要dump备份,1是需要,0是不需要。
第六列:系统启动时,是否使用fsck磁盘检测工具检查文件系统。1需要,0不需要,2跳过。
(2)重启系统。
(3)使用mount命令查看挂载情况 ,可以观察到:/data1目录支持磁盘配额。
4、管理磁盘配额
xfs_quota [-x] [-c “命令” ] [文件系统]
选项说明:
-x 专家模式,使运维人员能够对quota服务进行更多复杂设置。
-c 后跟以参数的形式设置要执行的命令,包括report、limit、timer、state等。
-c选项常用命令:
report [-ugp]
state [-ugp]
limit -u|-g|-p bsoft=N | bhard =N | isoft=N | ihard=N 用户名
timer -u|-g|-p 值
enable [-ugp]
disable [-ugp]
off [-ugp]
(1)u指用户(user),g指用户组(group),p指目录(project)
(2)文件系统可以是磁盘分区,也可以是挂载点(1)查看用户的配额信息(report),默认情况下没有配置磁盘配额。
(2)查看用户的配额状态(state),可以观察到宽限时间默认为 7 天。
(3)新建用户wangxiaoming,对用户wangxiaoming进行磁盘配额限制:设定blocks软限制100M,blocks硬限制为200M。
(4)再次查看用户的配额信息(report),可以观察到配置的软限制和硬限制。
(5)设置用户的宽限时间为3天。
(6)设置禁用及关闭磁盘配额。
(7)再次查看用户的配额状态(state),可以观察到配置的宽限时间、accounting和enforcement状态为off。
5、练习1:VIM编辑器
(1)在当前目录中通过VIM命令新建wol文件。
(2)进入wol文件后,输入一行文字 I am a student ,保存退出。
(3)复制/etc/man_db.conf 文件到当前目录。
(4)打开复制到当前目录的man_db.conf文件,将光标移动到行尾,再将光标移动到行首。
(5)将光标移动到21行,删除5行。
(6)撤销刚才的操作。
(7)将光标移动到11行,复制10行。
(8)将复制的内容粘贴到文章末尾。
(9)设定行号,移动到第58行。
(10)移动到第1行,向下查找local这个字符串。
(11)将文档中的man字符串(全部)改写为大写MAN字符串。
(12)全部复原。
(13)将这个文件另存为man.test.config文件。
(14)保存退出。
6、练习2:用户管理
(1)创建一个新的用户账户,命名为 testuser1。
(2)修改 testuser1 的家目录为 /testuser1。
(3)更改 testuser1 的登录 Shell 为 /sbin/nologin。
(4)为 testuser1 设置密码,并确保密码符合复杂性要求。
(5)验证 testuser1 的用户属性是否正确。
(6)创建一个新的组,命名为 testgroup1。
(7)修改 testgroup1 的 GID 为 1018。
(8)将 testuser1 用户添加到 testgroup1 组。
(9)删除 testuser1 用户账户, 保留用户文件。
(10)删除 testgroup1 组。
7、练习3:磁盘管理
(1)在虚拟机中添加一块30GB的SCSI硬盘。
(2)在新硬盘中创建两个大小为10GB的主分区。
(3)剩余空间作为扩展分区。
(4)在扩展分区上划分两个大小为5GB的逻辑分区。
(5)将修改写入分区表并退出。查看分区结果。
(6)在两个主分区上创建xfs文件系统,在两个逻辑分区上创建ext4文件系统。
(7)将第一个主分区挂载到/mnt/xf2s下,将第一个逻辑分区挂载到/mnt/exts下,查看挂载结果。
(8)设置自动挂载第一个分区。重启测试自动挂载是否生效。