昨日课后习题:
案例1:虚拟机上操作:复制、删除、移动及vim文本编辑器

  1. 在目录/mnt下创建一个子目录public

]# mkdir /mnt/public

  1. 在目录/mnt/public 创建文件linux.txt,利用vim写入内容 Study Linux

]# vim /mnt/public/linux.txt
Study Linux

  1. 将/mnt/public/linux.txt文件复制到/root目录下,同时 改名为 study.txt

]# cp /mnt/public/linux.txt /root/study.txt
]# ls /root

  1. 利用vim 修改文件/etc/hostname将其原有内容全部删除,写入新的内容为www.qq.com

]# vim /etc/hostname
www.qq.com

  1. 将/etc/passwd 、/etc/resolv.conf、/etc/hostname 同时拷贝到/mnt/public/目录下

]# cp /etc/passwd /etc/resolv.conf /etc/hostname /mnt/public/

  1. 将文件 /mnt/public/hostname 重改名为 stu.txt

]# mv /mnt/public/hostname /mnt/public/stu.txt
]# ls /mnt/public

  1. 创建目录结构/mnt/public/test/vm

]# mkdir -p /mnt/public/test/vm

  1. 将目录 /boot内容中以 vm 开头的 复制到/mnt/public/test/vm目录下

]# find /boot -name “vm*” -exec cp –r {} /mnt/public/test/vm \;
9. 将/home目录复制到/mnt/public/test/目录下
]# cp -r /home /mnt/public/test/
案例2:虚拟机上操作:复制、删除、移动及vim文本编辑器

  1. 创建目录结构/study/nsd01

]# mkdir -p /study/nsd01

  1. 在目录/study/nsd01 创建文件abc.txt,利用vim写入内容 abc.tedu.cn

]# vim /study/nsd01/abc.txt
abc.tedu.cn

  1. 将/study/nsd01/abc.txt文件复制到/opt目录下,同时 改名为 test.txt

]# cp /study/nsd01/abc.txt /opt/test.txt
]# ls /opt

  1. 利用vim 修改文件/etc/hostname将其原有内容全部删除,写入新的内容为www.sina.com

]# vim /etc/hostname
www.sina.com

  1. 将/etc/passwd 、/etc/resolv.conf、/etc/hostname 同时拷贝到/study/nsd01/目录下

]# cp /etc/passwd /etc/resolv.conf /etc/hostname /study/nsd01/
]# ls /study/nsd01/

  1. 将文件 /study/nsd01/hostname 重改名为 haxi.txt

]# mv /study/nsd01/hostname /study/nsd01/haxi.txt

  1. 创建目录结构/root/vm

]# mkdir -p /root/vm

  1. 将目录 /boot内容中以 vm 开头的 复制到/root/vm目录下

]# find /boot -name “vm*” -exec cp –r {} /root/vm \;
]# ls /root/vm
9. 将/home目录复制到/root/vm目录下
]# cp -r /home /root/vm
案例3:虚拟机上操作:ls与cat、head

  1. 显示根目录下所有内容

]# ls -A /

  1. 显示/etc目录下所有以tab结尾的文件

]# ls /etc/*tab

  1. 显示/etc/resolv.conf文件的详细属性并加上易读的单位

]# ls -lh /etc/resolv.conf

  1. 显示/etc/passwd文件的详细属性并加上易读的单位

]# ls -lh /etc/passwd
5. 显示/etc/passwd文件的头4行内容
]# head -4 /etc/passwd

案例4:tar制作/释放归档压缩包
首先创建/root/boothome/与/root/usrsbin/目录
]# mkdir /root/boothome/ /root/usrsbin/

  1. 备份/boot、/home这两个文件夹,保存为boothome.tar.gz文件

]# tar -zcf boothome.tar.gz /boot /home
]# ls

  1. 查看boothome.tar.gz文件内包含哪些内容

]# tar -tf boothome.tar.gz

  1. 将boothome.tar.gz释放到文件夹/root/boothome/下

]# tar -xf boothome.tar.gz -C /root/boothome/
]# ls /root/boothome/

  1. 备份/usr/sbin目录,保存为usrsbin.tar.bz2文件

]# tar -jcf usrsbin.tar.bz2 /usr/sbin
]# ls

  1. 查看usrsbin.tar.bz2文件内包含哪些内容

    ]# tar -tf usrsbin.tar.bz2
    6)将usrsbin.tar.bz2释放到/root/usrsbin/文件夹下
    ]# tar -xf usrsbin.tar.bz2 -C /root/usrsbin/
    ]# ls /root/usrsbin/
    案例5:虚拟机上操作,查找并处理文件
    –创建用户student,创建目录/root/findfiles
    – 利用find查找所有用户 student 拥有的必须是文件,把它们拷贝到 /root/findfiles/ 文件夹中
    – 利用find查找/boot目录下大于10M并且必须是文件,拷贝到/opt
    ]# find /boot -size +10M -type f -exec cp {} /opt \;
    – 利用find查找/boot/ 目录下以 vm 开头且必须是文件,拷贝到/opt
    ]# find /boot -name “vm*” -type f -exec cp {} /opt \;

    – 利用find查找/boot/ 目录下为快捷方式
    ]# find /boot/ -type l
    – 利用find查找/etc 目录下,以 tab 作为结尾的 必须是文件
    ]# find /etc -name “*tab” -type f

案例6:vim效率操作
1)将文件 /etc/passwd 复制为 /opt/nsd.txt
–打开 /opt/nsd.txt 文件
–练习命令模式下的光标切换/复制/删除/查找操作

2)将文件 /etc/man_db.conf 复制到 /opt 目录下
–打开 /opt/man_db.conf 文件
–将第50~100行内的“man”替换为“MAN”
–在 vim 中设置显示行号

#
  1. 环境准备

1.光盘文件放入光驱设备
RPM软件包管理、Yum软件包仓库 - 图1
RPM软件包管理、Yum软件包仓库 - 图2

2.挂载光驱设备
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# ls /mnt
[root@localhost ~]# ls /mnt/Packages

RPM软件包简介

  • RPM Package Manager

由红帽公司提出,RedHat、SUSE等系列采用
建立集中数据库,记录软件包安装/卸载等变化信息,分析软件包依赖关系

  • RPM包文件名特征

    • 软件名-版本信息.操作系统.硬件架构.rpm

    firefox-52.7.0-1.el7.centos.x86_64.rpm
    软件名:firefox
    软件包名:firefox-52.7.0-1.el7.centos.x86_64.rpm

RPM包的一般安装位置(分散)

文件类别 默认安装位置
普通执行程序 /usr/bin/ 、/bin/
服务器程序、管理工具 /usr/sbin/ 、/sbin/
配置文件 /etc/ 、/etc/软件名/
日志文件 /var/log/、/var/log/软件名/
程序文档、man帮助手册页 /usr/share/doc/ 、/usr/share/man/

查询软件信息

  • 查询是否安装此软件(参数是软件名)

]# rpm -qa #当前系统中所有已安装的软件包
]# rpm -q firefox #查看firefox是否安装
firefox-52.7.0-1.el7.centos.x86_64
]# rpm -q httpd
未安装软件包 httpd
]# rpm -q bash
bash-4.2.46-30.el7.x86_64

]# rpm -qi firefox #查询软件信息
]# rpm -ql firefox #查询软件安装了哪些内容(安装清单)
]# rpm -ql firefox | less

查询某个目录/文件是哪个RPM包带来的

  • 格式:rpm -qf [文件路径]…
  • 即使目标文件被删除,也可以查询

[root@localhost ~]# which vim #查询命令对应的程序文件
/usr/bin/vim
[root@localhost ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-4.el7.x86_64
[root@localhost ~]# rpm -q vim-enhanced
vim-enhanced-7.4.160-4.el7.x86_64
[root@localhost ~]# rpm -qf /usr/sbin/poweroff

查询软件包

]# rpm -q vsftpd #查询vsftpd软件是否安装
未安装软件包 vsftpd
]# ls /mnt/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm
查询软件包的安装清单:
]# rpm -qpl /mnt/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm

查询软件包信息
]# rpm -qpi /mnt/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm

导入红帽签名信息(了解)

]# rpm —import /mnt/RPM-GPG-KEY-CentOS-7
查询软件包信息
]# rpm -qpi /mnt/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm

安装RPM软件(了解)

  • 格式:rpm -i RPM包文件…
    • 辅助选项
  • -v:显示细节信息
  • -h:以#号显示安装进度

]# rpm -q vsftpd #查询当前的系统是否安装了该软件
未安装软件包 vsftpd

]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
]# rpm -q vsftpd #查询当前的系统是否安装了该软件
vsftpd-3.0.2-22.el7.x86_64

]# rpm -evh vsftpd #卸载软件
]# rpm -q vsftpd #查询当前的系统是否安装了该软件
未安装软件包 vsftpd

解决依赖关系

  • 先安装/卸载要求的包
  • 如果RPM包齐全但比较多,可以用通配符 *
    • 忽略依赖关系(不推荐)
  • 可能会导致软件运行异常
  • 辅助选项 —nodeps

常见依赖关系的报错:
[root@localhost ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-61.el7.x86_64.rpm
错误:依赖检测失败:
bind = 32:9.9.4-61.el7 被 bind-chroot-32:9.9.4-61.el7.x86_64 需要

构建Yum软件包仓库

作用:自动解决依赖关系安装软件
服务:自动解决依赖关系安装软件

服务端(本机): 1.众多的软件 2.仓库数据文件(repodata)
本地Yum仓库:服务端需要有光盘内容即可

客户端(本机):指定服务端位置

  • 仓库配置:/etc/yum.repos.d/*.repo
  • 错误的文件会影响正确的文件

yum命令执行流程:
yum命令—-》读取/etc/yum.repos.d/*.repo配置文件内容—-》从而找到仓库的具体位置

客户端文件配置内容:

  • [源名称] :自定义名称,具有唯一性
  • name:本软件源的描述字串
  • baseurl:指定YUM服务端的URL地址
  • enabled:是否启用此频道
  • gpgcheck:是否验证待安装的RPM包
  • gpgkey:用于RPM软件包验证的密钥文件


    完整示例:
    ]# vim /etc/yum.repos.d/mydvd.repo
    [nsd20]
    name=hahaxixi
    baseurl=file:///mnt
    enabled=1
    gpgcheck=1
    gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7

]# ls /etc/yum.repos.d/
]# mkdir /etc/yum.repos.d/bak
]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
]# ls /etc/yum.repos.d/
]# ls /etc/yum.repos.d/bak

]# vim /etc/yum.repos.d/mydvd.repo
[nsd20] #仓库的名称
name=hahaxixi #仓库描述信息
baseurl=file:///mnt #指定服务端位置file://表示本地为服务端
enabled=1 #本文件启用
gpgcheck=0 #不检测红帽签名信息

]# yum repolist #列出仓库信息

  • 总结:本地Yum仓库构建方法

1.显示光盘的内容,挂载光驱设备 mount /dev/cdrom /mnt
2.书写客户端配置文件,指定仓库位置
3.执行流程: yum命令—->/etc/yum.repos.d/*.repo—->baseurl=file:///mnt

  • 总结:本地Yum仓库排除错误

1.没有挂载光驱设备
2./etc/yum.repos.d目录下的配置文件内容
3.错误的配置文件影响

  1. Yum的使用

    安装软件

    [root@localhost ~]# yum -y install httpd
    [root@localhost ~]# rpm -q httpd
    [root@localhost ~]# yum -y install bind-chroot
    [root@localhost ~]# rpm -q bind-chroot
    [root@localhost ~]# yum -y install sssd
    [root@localhost ~]# rpm -q sssd

[root@localhost ~]# yum -y install gcc
[root@localhost ~]# rpm -q gcc

[root@localhost ~]# yum -y install xorg-x11-apps
[root@localhost ~]# rpm -q xorg-x11-apps

[root@localhost ~]# rpm -ql xorg-x11-apps | grep bin
[root@localhost ~]# xeyes

卸载软件

[root@localhost ~]# yum remove gcc
[root@localhost ~]# yum remove httpd

查询

[root@localhost ~]# yum list ftp #查询仓库是否有ftp软件
可安装的软件包 #表示当前系统没有安装该软件
ftp.x86_64 0.17-67.el7 nsd20

[root@localhost ~]# yum list httpd
[root@localhost ~]# yum search ftp #包含ftp就匹配

]# yum provides /usr/bin/hostname
]# yum provides /etc/passwd #仓库中那个软件包产生该文件

清空缓存

执行流程: yum命令—->/etc/yum.repos.d/*.repo—->baseurl=file:///mnt
[root@localhost ~]# yum clean all
[root@localhost ~]# yum repolist
[root@localhost ~]# yum repolist

  • 删除/usr/bin/zip程序,然后通过yum工具进行恢复

[root@svr1 ~]# rm -rf /usr/bin/zip
[root@svr1 ~]# ls /usr/bin/zip
ls: 无法访问/usr/bin/zip: 没有那个文件或目录
[root@svr1 ~]#
[root@svr1 ~]# yum provides /usr/bin/zip #查询仓库中那个软件产生了此程序
[root@svr1 ~]# yum -y reinstall zip #覆盖安装
[root@svr1 ~]# ls /usr/bin/zip
/usr/bin/zip

  1. 命令补充
  • 获取命令帮助

方式一:命令 —help
[root@localhost ~]# cat —help
方式二:man 命令
[root@localhost ~]# man cat #按q退出
[root@localhost ~]# man passwd #显示passwd命令帮助
[root@localhost ~]# man 5 passwd
数字5表示帮助的类型,表示配置文件类型

历史命令

管理/调用曾经执行过的命令

  • history:查看历史命令列表
  • history -c:清空历史命令
  • !n:执行命令历史中的第n条命令
  • !str:执行最近一次以str开头的历史命令

[root@svr7 ~]# vim /etc/profile
HISTSIZE=1000 #默认记录1000条

[root@localhost ~]# history #显示历史命令列表
[root@localhost ~]# history -c #清空历史命令
[root@localhost ~]# history
[root@localhost ~]# cat /etc/redhat-release
[root@localhost ~]# ls /root
[root@localhost ~]# history
[root@localhost ~]# !cat #指定最近一条以cat开头的历史命令
[root@localhost ~]# !ls #指定最近一条以ls开头的历史命令

du,统计文件的占用空间

  • -s:只统计每个参数所占用的总空间大小
  • -h:提供易读容量单位(K、M等)

[root@localhost ~]# du -sh /root
[root@localhost ~]# du -sh /etc
[root@localhost ~]# du -sh /boot
[root@localhost ~]# du -sh /

date,查看/调整系统日期时间

  • date +%F、date +%R
  • date +”%Y-%m-%d %H:%M:%S”
  • date -s “yyyy-mm-dd HH:MM:SS”

]# date
]# date -s “2008-9-6 11:17:11” #修改系统时间
]# date

]# date -s “2022-5-7 16:15:11”
]# date

[root@localhost ~]# date +%Y #显示年
[root@localhost ~]# date +%m #显示月
[root@localhost ~]# date +%d #显示日期

[root@localhost ~]# date +%H #显示时
[root@localhost ~]# date +%M #显示分
[root@localhost ~]# date +%S #显示秒

[root@localhost ~]# date +%F #显示年-月-日
[root@localhost ~]# date +%R #显示时:分

制作链接文件(制作快捷方式)

格式:ln -s /路径/源数据 /路径/快捷方式的名称 #软链接
]# ls /etc/sysconfig/network-scripts/ifcfg-lo
]# ln -s /etc/sysconfig/network-scripts/ifcfg-lo /mylo
]# ls /
]# ls -l /mylo
lrwxrwxrwx. 1 root root 39 5月 7 16:25 /mylo -> /etc/sysconfig/network-scripts/ifcfg-lo

]# ln -s /etc/sysconfig/network-scripts/ /ns
]# ls /
]# ls -l /ns #查看快捷方式的信息

]# touch /ns/haha.txt
]# touch /ns/maohehaozi.txt
]# touch /ns/shukehebeita.txt
]# ls /etc/sysconfig/network-scripts/

软链接优势:可以针对目录与文件制作快捷方式,支持跨分区
软链接缺点:源数据消失,快捷方式失效
[root@svr1 ~]# rm -rf /opt/*
[root@svr1 ~]# ls /opt/
[root@svr1 ~]# echo 123456 > /opt/A.txt
[root@svr1 ~]# ln -s /opt/A.txt /opt/B.txt
[root@svr1 ~]# ls /opt/
A.txt B.txt
[root@svr1 ~]# rm -rf /opt/A.txt
[root@svr1 ~]# ls /opt/
B.txt
[root@svr1 ~]#

格式:ln /路径/源数据 /路径/快捷方式的名称 #硬链接
硬链接优势:源数据消失,快捷方式仍然有效
硬链接缺点:只能针对文件制作快捷方式,不支持支持跨分区
[root@localhost ~]# rm -rf /opt/*
[root@localhost ~]# echo 123 > /opt/A.txt
[root@localhost ~]# ln -s /opt/A.txt /opt/B.txt #软链接
[root@localhost ~]# ls /opt/

[root@localhost ~]# ln /opt/A.txt /opt/C.txt #硬链接
[root@localhost ~]# ls /opt/
[root@localhost ~]# cat /opt/B.txt
[root@localhost ~]# cat /opt/C.txt

[root@localhost ~]# rm -rf /opt/A.txt
[root@localhost ~]# ls /opt/
[root@localhost ~]# cat /opt/B.txt #软链接失效
cat: /opt/B.txt: 没有那个文件或目录
[root@localhost ~]# cat /opt/C.txt #硬链接仍然有效

zip归档工具,跨平台(Windows与Linux)

  • 归档+压缩操作: zip [-r] 备份文件.zip 被归档的文档…

[-r]:被归档的数据有目录,必须加上此选项
]# zip -r /opt/abc.zip /etc/passwd /home
]# ls /opt/

  • 释放归档+解压操作: unzip 备份文件.zip [-d 目标文件夹]

]# unzip -l /root/abc.zip #查看压缩包的内容
]# mkdir /nsd20
]# unzip /opt/abc.zip -d /nsd20
]# ls /nsd20
]# ls /nsd20/etc/
]# ls /nsd20/home/

课后习题:
案例1:虚拟机上操作:复制、删除、移动及vim文本编辑器
1. 在目录/tmp下创建一个子目录good
2. 在目录/tmp/good 创建文件cloud.txt,利用vim写入内容 I am king
3. 将/tmp/good/cloud.txt文件复制到/root目录下,同时 改名为 king.txt
4. 利用vim 修改文件/etc/hostname将其原有内容全部删除,写入新的内容为vip.iqiyi.com
5. 将/etc/passwd 、/etc/resolv.conf、/etc/hostname 同时拷贝到/tmp/good/目录下
6. 将文件 /tmp/good/hostname 重改名为 he.txt
7. 创建目录结构/tmp/good/linux/vm
8. 将目录 /boot内容中以 vm 开头的 复制到/tmp/good/linux/vm目录下
9. 将/home目录复制到/tmp/good/linux/目录下

案例3:mount挂载
1. 在根目录下创建目录结构/CentOS7/dvd
2. 利用图形将光盘镜像文件放入光驱设备中
3. 将光驱设备挂载到/CentOS7/dvd目录,以/CentOS7/dvd目录作为其访问点
4. 查看/CentOS7/dvd/Packages目录内容
5. 将/CentOS7/dvd/Packages目录中以vsftpd开头的软件包,拷贝到/opt下

案例4:RPM软件包管理
1.列出当前系统中安装的所有rpm软件
2.查询当前系统是否安装firefox软件
3.查询当前系统是否安装bash软件
4.查询当前系统是否安装zip软件
5.查询当前系统是否安装elinks软件
6.查询当前系统是否安装hostname软件
7.查询firefox软件的信息
8.查询firefox软件的安装清单
9.查询bash软件的安装清单
10.查询hostname软件的安装清单

案例5:Yum软件仓库管理
1. 将光驱设备挂载到/CentOS7/dvd目录,以/CentOS7/dvd目录作为其访问点
2. 利用/CentOS7/dvd目录提供光盘内容作为软件源,构建本地Yum仓库
3. 安装软件包xorg-x11-apps,该软件会产生xeyes命令,在命令行运行xeyes命令测试效果

案例6:Yum软件仓库管理
1. 将光驱设备挂载到/os/centos目录,以/os/centos目录作为其访问点
2. 利用/os/centos目录提供光盘内容作为软件源,构建本地Yum仓库
3. 安装软件包gcc
[root@svr1 ~]# mkdir -p /os/centos
[root@svr1 ~]# mount /dev/cdrom /os/centos
mount: /dev/sr0 写保护,将以只读方式挂载
[root@svr1 ~]# ls /os/centos
[root@svr 1 ~]# rm -rf /etc/yum.repos.d/*
[root@svr1 ~]# vim /etc/yum.repos.d/mydvd.repo
[haha]
name=xixi
baseurl=file:///os/centos
enabled=1
gpgcheck=0
[root@svr1 ~]# yum -y install vsftpd

案例7:Yum软件仓库管理
1. 将光驱设备挂载到/iso/linux目录,以/iso/linux目录作为其访问点
2. 利用/iso/linux目录提供光盘内容作为软件源,构建本地Yum仓库
3. 安装软件包httpd
4.删除/usr/bin/zip程序,然后通过yum工具进行恢复

案例8:虚拟机上操作,查找并提取文件内容

  1. 查看内核版本,将显示结果重定向到/root/version.txt

[root@localhost ~]# uname -r
3.10.0-862.el7.x86_64
[root@localhost ~]# uname -r > /root/version.txt
[root@localhost ~]# cat /root/version.txt

  1. 查看红帽系统版本,将显示结果追加到/root/version.txt

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@localhost ~]# cat /etc/redhat-release >> /root/version.txt
[root@localhost ~]# cat /root/version.txt

  1. 查看主机名将显示结果追加到/root/version.txt

[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# hostname >> /root/version.txt
[root@localhost ~]# cat /root/version.txt

  1. 将/etc/fstab文件中以UUID开头的信息,写入到/root/fstab.txt

[root@localhost ~]# grep ^UUID /etc/fstab
UUID=ae2e2523-b5df-4d9c-8d39-c07166ad2c71 /boot xfs defaults 0 0
[root@localhost ~]# grep ^UUID /etc/fstab > /root/fstab.txt
[root@localhost ~]# cat /root/fstab.txt

  1. 提取/etc/passwd以bash结尾的行,将其信息写入/opt/pass.txt

[root@localhost ~]# grep bash$ /etc/passwd

[root@localhost ~]# grep bash$ /etc/passwd > /opt/pass.txt

[root@localhost ~]# cat /opt/pass.txt

  1. 复制/etc/login.defs文件到当前目录下,改名为init.txt

[root@localhost ~]# pwd
/root
[root@localhost ~]# cp /etc/login.defs init.txt
[root@localhost ~]# ls

  1. 提取init.txt文件里的有效配置(去除以#号开头与去除空行),保存为init2.txt

[root@localhost ~]# grep -v ^# init.txt
[root@localhost ~]# grep -v ^# init.txt | grep -v ^$
[root@localhost ~]# grep -v ^# init.txt | grep -v ^$ > init2.txt
[root@localhost ~]# cat init2.txt

案例:实用的技巧
1.利用du命令统计/root目录大小
2.查看系统时间,以及只显示“年-月-日”如何实现?
3.将/etc/hosts文件制作快捷方式(软连接),放在/tmp目录快捷方式的名为hs
4.利用zip将/home进行压缩,压缩包放在/root目录下名为home.zip
5.新建目录/mybak,将/root/home.zip释放到目录/mybak