第五周 程序包管理

1、简述tar命令的常见选项,并举例

tar—— 文件压缩与解压

★命令格式

tar [OPTION…] [FILE]…

创建归档(-c,-f 指定文件):

tar -c -f /PATH/TO/SOMEFILE.tar FILE… (后缀名固定以 .tar 结尾;)

tar -cf /PATH/TO/SOMEFILE.tar FILE… (可以合并写为-cf ,但不能写为 -fc ,因为-f 选项后带参数)

展开归档(-x,-f 指定文件):

tar -x -f /PATH/TO/SOMEFILE.tar (展开至归档所在的文件中)

tar xf /PATH/TO/SOMEFILE.tar -C /PATH/TO/SOMEFILE (-C :展开归档至指定文件中)

查看归档文件中的列表(-t,-f 指定文件):

tar -tf /PATH/TO/SOMEFILE.tar

注意:

多个选项可以合并,但-f由于要带参数,因此要放到最右侧 如:-cf,-xf,-cf;

选项的引导符 “-” 可省略。如:tar xf,tar zf

★常见选项
-c:创建压缩文件
-x:解压文件
-z:指定使用Gzip格式来压缩解压文件
-j:指定使用bzip2参数来压缩解压文件
-J:指定使用xz参数来压缩解压文件
-v:不断显示压缩或解压的过程给用户
-C:用于指定要解压到的那个指定的目录
-f:压缩或解压的软件包名称
-t:快速列出文件中包含的内容

★示例

1.创建一个 tar 文件,将 /etc/ 目录和 /root/anaconda-ks.cfg 文件打包进去

[[email protected] ~]# tar -cvf myarchive.tar /etc/ /root/anaconda-ks.cfg

以上命令会在当前目录创建一个名为 “myarchive” 的 tar 文件,内含 /etc/ 目录和 /root/anaconda-ks.cfg 文件。

其中,-c 选项表示要创建 tar 文件,-v 选项用于输出 tar 的详细过程到屏幕上,-f 选项则是指定归档文件名称。

[[email protected] ~]# ls -l myarchive.tar

-rw-r–r– 1 root root 28180480 Dec 31 17:17 myarchive.tar

[[email protected] ~]#

2.列出归档文件中的内容

在 tar 命令中使用 –t 选项可以不用释放其中的文件就可以快速列出文件中包含的内容。

[[email protected] ~]# tar -tvf myarchive.tar

列出 tar 文件中的指定的文件和目录。下列命令尝试查看 anaconda-ks.cfg 文件是否存在于 tar 文件中

[[email protected] ~]# tar -tvf myarchive.tar root/anaconda-ks.cfg

-rw——- root/root 1423 2017-11-30 17:59 root/anaconda-ks.cfg

3.从 tar 文件中释放文件以及目录

-x 选项用于释放出 tar 文件中的文件和目录。下面来释放上边创建的 tar 文件中的内容。

[[email protected] ~]# tar -xvf myarchive.tar

这个命令会在当前目录中释放出 myarchive.tar 文件中的内容

4.释放 tar 文件到指定目录

假如你想要释放 tar 文件中的内容到指定的文件夹或者目录,使用 -C 选项后边加上指定的文件的路径。

[[email protected] ~]# tar -xvf myarchive.tar -C /tmp/

其实最简单的使用 tar 就只要记忆底下的方式即可:

压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称

查 询:tar -jtv -f filename.tar.bz2

解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

2、简述rpm与yum命令的常见选项,并举例

rpm—— 包管理器 安装、升级、卸载、查询和校验、数据库维护

★命令格式——rpm [OPTIONS] [PACKAGE_FILE]

★常见选项
-i,–install:安装
-U,–update,-F,–freshen:升级
-e,–erase:卸载
-q,–query:查询
-V,–verify:校验
–builddb,–initdb:数据库维护

★安装及子选项

rpm {-i|–install} [install-options] PACKAGE_FILE…

选项:

-v:verbose 显示详细信息;

-vv:更详细的输出;

-h: hash marks 输出进度条;每个#号表示2%的进度

–test:测试安装,检查并报告依赖关系及冲突关系,但不真正执行安装;称为dry run(干跑)模式

–nodeps:忽略依赖关系,不建议;

–replacepkgs:替代原来的包,重新安装(先把由原来的配置文件删除再重装)

–nosignature:不检查包签名信息,不检查来源合法性

–nodigest:不检查包完整性

注意:rpm自带四类脚本(–noscripts)

%pre:安装前脚本; –nopre

%post:安装后脚本; –nopost

%preun:卸载前脚本; –nopreun

%postun:卸载后脚本;–nopostun

真正安装执行操作使用的命令

rpm -ivh PACKAGE_FILE

★升级及子选项

rpm {-U|–upgrade} [install-options] PACKAGE_FILE…

rpm {-F|–freshen} [install-options] PACKAGE_FILE…

注意:

-U(upgrade):安装有旧版程序包,则“升级”如果不存在旧版程序包,则“安装”

-F(freshen):安装有旧版程序包,则“升级”如果不存在旧版程序包,则“不安装”

旧版程序包,则“升级”如果不存在旧版程序包,则不执行升级操作

升级命令:

rpm -Uvh PACKAGE_FILE …

rpm -Fvh PACKAGE_FILE …

–oldpackage:降级(回滚操作)

–force: 强行升级

注意:

不要对内核做升级操作;Linux支持多内核版本并存,因此,可以直接安装新版本内核

如果源程序包的配置文件安装后曾被修改过,升级时,新版本的提供的同一个配置文件不会直接覆盖老版本的配置文件,而把

新版本的文件重命名(FILENAME.rpmnew)后保留

安装并升级 zsh 软件包

[[email protected] rpm]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm

Preparing… ########################################### [100%]

1:zsh ########################################### [100%]

[[email protected] rpm]# rpm -Uvh zsh-4.3.10-9.el6.x86_64.rpm

Preparing… ########################################### [100%]

1:zsh ########################################### [100%]

如果想要将软件包降级到旧版本,使用 –oldpackage 选项

[[email protected] rpm]# rpm -Uvh –oldpackage zsh-4.3.10-7.el6.x86_64.rpm

Preparing… ########################################### [100%]

1:zsh ########################################### [100%]

★卸载及子选项

移除已安装的程序包

rpm {-e|–erase}[–allmatches][–nodeps][–test] PACKAGE_NAME

注意:

卸载和查询是包的名,因为包已经存在了;而安装和升级,包是不存在的,所以是包的文件路径

简单用法

rpm -e PACKAGE_NAME…

选项:

–allmatches:卸载所有匹配名称的程序包各版本

–nodeps:忽略依赖关系

–test:测试卸载,dry run 模式

★查询

rpm {-q|–query} [select-options] [query-options]

[select-options] 挑选选项

-q PACKAGE_NAME:查询指定的程序包是否安装,及其版本

-qa:查询已安装的所有包

-qf FILE:查看指定的文件由哪个程序包安装生成

-p PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;

–whatprovides CAPABILITY(能力):查询指定的CAPABILITY由哪个包所提供

–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

rpm2cpio 包文件|cpio–itv预览包内文件

rpm2cpio 包文件|cpio–id “*.conf”释放包内文件

[query-options] 查询选项

–changelog:查询rpm包的changelog(变更记录)

-c:查询指定的程序包的配置文件

-d:查询程序包安装完成后所生成的帮助文档

-qi,-info:程序包相关的信息,版本号,大小,所属的包组等

-l,–list:查看指定的程序包安装后生成的所有文件列表;

–scripts:查看程序包自带的脚本片断

-R,–requires:查询指定的程序包所依赖的CAPABILITY;

–provides:列出指定程序包所提供的CAPABILITY

常用组合用法:

-qi PACKAGE 程序包相关信息

-qf FILE 指定文件由那包安装生成

-qc PACJAGE 配置文件

-ql PACKAGE 程序包安装生成的文件列表

-qd PACKAGE 程序包安装生成的文档

-qpi PACKAGE_FILE

-qpl PACKAGE_FILE

-qpc PACKAGE_FILE,..

rpm -q查询某包是否已经安装

rpm -qa查询所有已安装的包

rpm -qa tree查询已安装的tree包名称

rpm -qi tree查询tree包的信息

rpm -ql tree查询tree包的所有文件

rpm -qf /usr/bin/ls查看/usr/bin/ls由哪个包生成

rpm -q –whatprovides tree查看tree命令来自于哪个包

rpm -q –whatrequires bash查看哪些包依赖于bash

rpm -qpi /misc/cd/Packages/zip-3.0-11.el7.x86_64.rpm查看未安装的包的信息

rpm -qpl /misc/cd/Packages/zip-3.0-11.el7.x86_64.rpm查看未安装包的会生成的所有文件

rpm -qpR /misc/cd/Packages/autofs-5.0.7-56.el7.x86_64.rpm查看未安装包所依赖的

★校验

rpm {-V|–verify} [select-options] [verify-options]

常见用法:

rpm -V PACHAGE_NAME

当没有输出结果时表示软件包完整ok,当有相应的结果输出表明对应的内容有修改,及具体如下:

S:file Size differs(文件的容量大小是否被改变);

M:Mode differs (includes permissions and file type)文件的类型或属性是否被改变;

5:digest (formerly MD5 sum) differs 这是一种指纹内容已经不同;

D:Device major/minor number mismatch 装置的主/次代码已经改变;

L:readLink(2) path mismatch 路径已被改变

U: User ownership differs 文件的属主已被改变

G:Group ownership differs 文件的属组已被改变;

T:mTimediffers 文件的创建时间已被改变;

P:capabilities differ

包来源合法性验证及完整性验证:

完整性验证:SHA256

来源合法性验证:RSA

数字签名:用自己私钥去加密对应数据的特征码

制包者利用单项加密算法去提取包的特征码(定长),用自己的私钥加密特征码,把特征码加密后附加到文件后面生成包成就

数字签名使包者拿到包以后,验证来源的合法性,拿到制包者的公钥去解密特征码,如果能解密就认为的确是制包者加密的

(因为私钥只有制包者有,就是说加密要制包者一个人做);使包者同样利用单项加密算法去提取包的特征码,并比较特征

码,如果两者一样就说明包的完整性得到验证

获取并导入信任的包制作者的秘钥

对于CentOS发行版来说:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

验证:

安装此组织签名的程序包时,会自动执行验证;

手动验证:rpm -K PACKAGE_FILE

加密方法:

公钥加密:

对称加密:加密、解密使用同一密钥;

非对称加密:密钥是成对儿的

public key:公钥,公开所有人

secret key:私钥, 不能公开

导入所需要的公钥:

rpm -K |checksigrpmfile:检查包的完整性和签名

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7

rpm -qagpg-pubkey*

★数据库重建

rpm数据库路经:

/var/lib/rpm

查询操作:通过此处得到数据库进行

用法:

rpm {–initdb|–rebuilddb}

选项:

–initdb: 初始化数据库。当前无任何数据库,则新建之;当前有时不执行任何操作。

rpm –initdb 创建一个新的 RPM 数据

如果已经没有其他别的办法了,–initdb 会创建一个新的空的 RPM 数据库。由于新建的数据库是空的,不要万不得已不要使用这个命令

–rebuilddb:重新构建。无论当前存在与否,都会直接重新创建数据库。

rpm –rebuilddb 表示重建数据库

这个命令会从已安装的软件包提取信息重建数据库,它从 /var/lib/rpm/Packages 这个文件中提取信息,其他所有的数据库文件都可以由这个文件重建。如果 RPM 的数据库是完好的,这个命令不会重建,而是对数据库中未使用的条目进行空间回收

获取帮助

CentOS6 man rpm

CentOS7 man rpmdb

[[email protected] ~]# mkdir /tmp/rpm

[[email protected] ~]# rpm –initdb –dbpath=/tmp/rpm

[[email protected] ~]# ls /tmp/rpm

[[email protected] ~]# rpm –rebuilddb –dbpath=/tmp/rpm

[[email protected] ~]# ls /tmp/rpm

yum—— 包管理器

★命令格式——yum [options] [command] [package …]

★常见参数

显示仓库列表

yum repolist [all|enabled|disabled]:显示所有,启用和禁用的;

显示程序包:

yum list [all | glob_exp1] [glob_exp2] […] :支持使用glob风格的通配

yum list {available|installed|updates} [glob_exp1] 通配符

安装程序包

yum install package1 [package2] […];

yum reinstall package1 [package2] […] (重新安装)

升级程序包

yum update [package1] [package2] […]

yum downgrade package1 [package2] […] (降级)

检查可用升级:

yum check-update

卸载程序包

yum remove | erase package1 [package2] […]

查看程序包简要信息information:

yum info […]

查看指定的特性(可以是某文件)是由哪个程序包所提供:

yum provides | whatprovides feature1 [feature2] […]

清理本地缓存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建缓存:

yum makecache

搜索:

yum search string1 [string2] […]

以指定的关键字搜索程序包名及summary(总结,概括)信息

查看指定包所依赖的capabilities(依赖关系分析):

yum deplist package1 [package2] […]

查看yum事务历史:

yum history [info|list|packages-list|packages-info||redo|undo|rollback|new|sync|summary|stats]

安装及升级本地程序包

* localinstall rpmfile1 [rpmfile2] […] (用install替代)

* localupdate rpmfile1 [rpmfile2] […] (用update替代)

日志位置:

/var/log/yum.log

包组管理的相关命令:

yum groupinstall group1 [group2] […]

yum groupupdate group1 [group2] […]

yum grouplist [hidden] [groupwildcard] […]:列出所有包组

yum groupremove group1 [group2] […]:卸载

yum groupinfo group1 […]:显示指定包组详情

★常见选项
–nogpgcheck:禁止进行gpgcheck
-y:自动回答为“yes”
-q:静默模式
–disablerepo=repoidglob:临时禁用此处指定的repo
–enablerepo=repoidglob:临时启用此处指定的repo
–noplugins:禁用所有插件

★常用的命令

自动搜索最快镜像插件:yum install yum-fastestmirror

安装yum图形窗口插件:yum install yumex

查看可能批量安装的列表:yum grouplist

★示例

1.安装 httpd

[[email protected] ~]# yum -y install httpd

2.查看程序包简要信息

[[email protected] ~]# yum info httpd

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirror.bit.edu.cn

* extras: mirrors.163.com

* updates: mirror.bit.edu.cn

Installed Packages

Name : httpd

Arch : x86_64

Version : 2.4.6

Release : 67.el7.centos.6

Size : 9.4 M

Repo : installed

From repo : updates

Summary : Apache HTTP Server

URL : http://httpd.apache.org/

License : ASL 2.0

Description : The Apache HTTP Server is a powerful, efficient, and extensible

: web server.

3.查看指定的特性(可以是某文件)是由哪个程序包所提供

[[email protected] ~]# yum provides httpd

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirror.bit.edu.cn

* extras: mirrors.163.com

* updates: mirror.bit.edu.cn

httpd-2.4.6-67.el7.centos.x86_64 : Apache HTTP Server

Repo : CentOS7

httpd-2.4.6-67.el7.centos.x86_64 : Apache HTTP Server

Repo : base

httpd-2.4.6-67.el7.centos.2.x86_64 : Apache HTTP Server

Repo : updates

httpd-2.4.6-67.el7.centos.5.x86_64 : Apache HTTP Server

Repo : updates

httpd-2.4.6-67.el7.centos.6.x86_64 : Apache HTTP Server

Repo : updates

httpd-2.4.6-67.el7.centos.6.x86_64 : Apache HTTP Server

Repo : @updates

4.查看指定包所依赖的capabilities(依赖关系分析)

[[email protected] ~]# yum deplist httpd

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirror.bit.edu.cn

* extras: mirrors.163.com

* updates: mirror.bit.edu.cn

package: httpd.x86_64 2.4.6-67.el7.centos.6

dependency: /bin/sh

provider: bash.x86_64 4.2.46-29.el7_4

dependency: /etc/mime.types

provider: mailcap.noarch 2.1.41-2.el7

dependency: /usr/sbin/groupadd

provider: shadow-utils.x86_64 2:4.1.5.1-24.el7

dependency: /usr/sbin/useradd

provider: shadow-utils.x86_64 2:4.1.5.1-24.el7

dependency: httpd-tools = 2.4.6-67.el7.centos.6

provider: httpd-tools.x86_64 2.4.6-67.el7.centos.6

dependency: libapr-1.so.0()(64bit)

provider: apr.x86_64 1.4.8-3.el7_4.1

dependency: libaprutil-1.so.0()(64bit)

provider: apr-util.x86_64 1.5.2-6.el7

dependency: libc.so.6(GLIBC_2.14)(64bit)

provider: glibc.x86_64 2.17-196.el7_4.2

dependency: libcrypt.so.1()(64bit)

provider: glibc.x86_64 2.17-196.el7_4.2

dependency: libdb-5.3.so()(64bit)

provider: libdb.x86_64 5.3.21-20.el7

dependency: libdl.so.2()(64bit)

provider: glibc.x86_64 2.17-196.el7_4.2

dependency: libexpat.so.1()(64bit)

provider: expat.x86_64 2.1.0-10.el7_3

dependency: liblua-5.1.so()(64bit)

provider: lua.x86_64 5.1.4-15.el7

dependency: libm.so.6()(64bit)

provider: glibc.x86_64 2.17-196.el7_4.2

dependency: libpcre.so.1()(64bit)

provider: pcre.x86_64 8.32-17.el7

dependency: libpthread.so.0()(64bit)

provider: glibc.x86_64 2.17-196.el7_4.2

dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)

provider: glibc.x86_64 2.17-196.el7_4.2

dependency: libselinux.so.1()(64bit)

provider: libselinux.x86_64 2.5-11.el7

dependency: libsystemd-daemon.so.0()(64bit)

provider: systemd-libs.x86_64 219-42.el7_4.4

dependency: libsystemd-daemon.so.0(LIBSYSTEMD_DAEMON_31)(64bit)

provider: systemd-libs.x86_64 219-42.el7_4.4

dependency: libz.so.1()(64bit)

provider: zlib.x86_64 1.2.7-17.el7

dependency: rtld(GNU_HASH)

provider: glibc.x86_64 2.17-196.el7_4.2

provider: glibc.i686 2.17-196.el7_4.2

dependency: system-logos >= 7.92.1-1

provider: centos-logos.noarch 70.0.6-3.el7.centos

dependency: systemd-units

provider: systemd.x86_64 219-42.el7_4.4

3、自建yum仓库,分别为网络源和本地源

Yum仓库

Yum仓库在单个RPM软件包的基础之上,进一步去解决依赖关系

Yum仓库是简化rpm软件包的安装以及管理的难度,解决rpm软件包的相互依赖性

解决软件包之间的依赖关系

所有Yum仓库的配置文件均需以 .repo 结尾并存放在/etc/yum.repos.d/目录中的

[rhel-media] : yum仓库唯一标识符,避免与其他仓库冲突。

name=linuxprobe : yum仓库的名称描述,易于识别仓库用处。

baseurl=file:///media/cdrom :提供方式包括FTP(ftp://..)、HTTP(http://..)、本地(file:///..)

enabled=1 : 设置此源是否可用,1为可用,0为禁用。

gpgcheck=1 : 设置此源是否校验文件,1为校验,0为不校验。

gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release :若为校验请指定公钥文件地址。

配置网络源

1.查看网络源配置文件,如果将yum 网络源配置文件改名为CentOS-Base.repo.bak,会先在网络源中寻找适合的包,改名之后直接从本地源读取
[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# ls
CentOS-Base.repo.bak  CentOS-Debuginfo.repo  CentOS-local.repo  CentOS-Sources.repo
CentOS-CR.repo        CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Vault.repo
[[email protected] yum.repos.d]# mv CentOS-Base.repo.bak CentOS-Base.repo
[[email protected] yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-local.repo  CentOS-Sources.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Vault.repo
 
2. 创建配置文件
[[email protected] yum.repos.d]# vi CentOS-Base.repo.bak
 
[bash]
name=Base Repo
baseurl=https://mirrors.aliyun.com/centos/7.4.1708/os/x86_64/
gpgcheck=0
enabled=1
 
[epel]
name=epel 7 Release 7
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
enabled=1
 
[[email protected] yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
repo id                                             repo name                                                status
Base                                               Base Repo
epel                                               epel 7 Release 7

配置本地源

1.挂载光盘至某目录,例如/media/cdrom

[[email protected] ~]# mount /dev/cdrom /media/cdrom

2. 创建配置文件

查看repodata仓库

[[email protected] ~]# cd /media/cdrom/

[[email protected] cdrom]# ls

CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7

EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL

创建配置文件即可

[[email protected] ~]# vi /etc/yum.repos.d/CentOS-local.repo

[CentOS7]

name=CentOS 7 Release 7.4

baseurl=file:///misc/cd

enabled=1

gpgcheck=0

4、简述at和crontab命令,制定每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00

at—— 未来时间点执行一次任务

at是由atd提供服务的,在使用之前要确认是否开启;
CentOS 6:service atd {status|start};
CentOS 7:systemctl {status|start} atd
★命令格式——at [option] TIME
TIME:定义出什么时候执行这项任务
HH:MM [YYYY-mm-dd];
HH:MM[am|pm] [Month] [Date];
noon(正午), midnight(午夜), teatime(下午4点),tomorrow(明天)
now+#{minutes—分钟,hours—小时,days—天, OR weeks—周}
at 的作业有队列,存放在/var/spool/at 中,用单个字母来表示,默认都使用 a 队列;
★常见选项
-q QUEUE:指明队列;
-l:列出指定队列中等待运行的作业;相当于atq;
-d #:删除指定作业号的作业;相当于atrm;
-c #:查看指定作业号的具体作业任务;
-v:可以使用较明显的时间格式列出at中的工作列表;
-f /path/from/somefile:从指定的文件中读取任务,不再交互式输入;(# at -f /testdir/at.txt)
-m:强制at发送邮件,表示执行完毕

★示例

1.HH:MM 如:02:00

在今日的HH:MM 进行,若该时刻已过,则明天此时执行任务

2.HH:MM YYYY-MM-DD 如:04:00 2016-09-20

规定在某年某月的某一天的特殊时刻进行该项任务

3.HH:MM[am|pm] [Month] [Date]

04pm March 17

17:20 tomorrow

4.HH:MM[am|pm] + number [minutes|hours|days|weeks]

在某个时间点再加几个时间后才进行该项任务

如:now + 5 minutes

04pm + 3 days

5.设定计划任务,在2分钟后执行

[[email protected] ~]# at now+2min

at> cat /etc/issue

at> ls /var

at> echo “hello there.”

at> # 按 Ctrl+d 提交

job 1 at Sun Dec 24 15:49:00 2017

crontab—— 周期性运行某任务

★命令格式——crontab [-u user] [-l | -r | -e] [-i]

★常见选项
-e:打开编辑界面定义任务;
-l:列出所有任务(仅是当前用户的所有任务);
-r:移除所有任务,即删除/var/spool/cron/USERNAME文件;  如果,删除单个任务应该通过编辑界面删除行实现;
-i:在使用-r选项移除所有任务时提示用户确认;
-u user:root用户可为指定用户管理cron任务(即为某个用户编辑计划任务);

★注意:

运行结果以邮件通知给当前用户;如果拒接接收邮件:

COMMAND > /dev/null (执行成功发送给 /dev/null )

COMMAND &> /dev/null(不管执行成功和错误都直接发送给 /dev/null,慎用!!!)

定义COMMAND时,如果命令需要用到%,需要对其转义,但放置于单引号中的%不用转义亦可;

如:touch $(date +%Y-%m-%d-%H-%M-%S)

思考:

某任务在指定的时间因关机未能执行,下次开机会不会自动执行?

不会执行! 如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用 ancorn 命令

[[email protected] ~]# crontab -e
no crontab for root – using an empty one
crontab: installing new crontab
 
[[email protected] ~]# crontab -l
10 03,05 * * 3 /tmp/bin/useradd3.sh date +’%F %X’

5、简述sed常用操作命令,并举例

sed—— 流编辑器

★命令格式——sed [OPTION]… ‘script’ [input-file]…

★常见选项
-n:不输出模式空间内容至屏幕(静默模式);
-e script:多点编辑,指定多脚本编辑;
-f /PATH/TO/SCRIPT_FILE:从指定文件中读取编辑脚本并运行(每行一个编辑命令);
-r:支持使用扩展正则表达式;
-i:原处编辑(直接修改源文件);-i.back(备份)—— 慎用

★注意

模式空间中的内容,默认都会在屏幕上显示出来;

sed在处理时,把当前要处理的行存储在“模式空间”中,然后处理模式空间中的内容,如果不能被模式空间中指定的模式匹配到,就将内容(没发生改变)送到标准输出(屏 幕);如果被模式空间中指定的的模式匹配到,就执行对匹配到模式内容对应的编辑命令操作,然后将操作后的结果送往标准输出;

★地址界定

不给地址(空地址):

对全文进行处理;

单地址:

#:表示数字,指定的行

$:最后一行;

/pattern/:被此处模式所能够匹配到的每一行;

地址范围:

#,# :从#行,到#行;

#,+n:从#行开始,一直到向下的n行;

/pat1/,/pat2/:从第一次被pat1匹配到的行开始,到第一次被pat2匹配到的行结束,中间的所有行;

#,/pat1/: 从#行开始,到第一次被pat1匹配到的行结束,中间的所有行。

~:步进,指定起始行及步长

1~2:所有奇数行

2~2:所有偶数行

★sed的编辑命令

d:删除模式空间匹配的行;

p:显示模式空间中被地址定界匹配到的内容;

a text:在行后面追加文本;支持使用n实现多行追加;

i text:在行前面插入文本;支持使用n实现多行插入;

c text:把指定到的行替换为此处指定的文本“text”;

w /path/to/somefile:保存模式空间中匹配到的行至指定的文件当中;

r /path/from/somefile:读取指定文件的内容至当前文件被模式匹配到的行处;实现文件合并

= : 为模式空间中匹配到的行打印行号;

!:条件取反,模式空间中匹配到的行取反处理;

s///:查找替换,其分隔符可自行指定,通常常用的有:[email protected]@@,s###等

替换标记:

g:全局替换;

w /PATH/TO/SOMEFILE:将替换成功后的结果保存至指定文件中;

p:显示替换成功后的行;

&:代表要查找的字符串

注意:这里添加或替换的内容,只是在模式空间中改变,原文件并没有被修改,如果要修改源文件 加 -i 选项(慎用)

★示例

1.d: 删除模式空间匹配的行

[[email protected] ~]# cat -n /etc/fstab

1

2 #

3 # /etc/fstab

4 # Created by anaconda on Thu Nov 30 17:46:50 2017

5 #

6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’

7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

8 #

9 UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 / ext4 defaults 1 1

10 UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot ext4 defaults 1 2

11 UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap swap defaults 0 0

12 /dev/sr0 /media/cdrom iso9660 defaults 0 0

[[email protected] ~]# cat -n /etc/fstab > sed.txt

# 删除1到5行的内容

[[email protected] ~]# sed ‘1,5d’ sed.txt

6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’

7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

8 #

9 UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 / ext4 defaults 1 1

10 UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot ext4 defaults 1 2

11 UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap swap defaults 0 0

12 /dev/sr0 /media/cdrom iso9660 defaults 0 0

# 删除以UUID开头的行,被模式 /^UUID/ 匹配到的每一行

[[email protected] ~]# sed ‘/^UUID/d’ /etc/fstab

#

# /etc/fstab

# Created by anaconda on Thu Nov 30 17:46:50 2017

#

# Accessible filesystems, by reference, are maintained under ‘/dev/disk’

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/sr0 /media/cdrom iso9660 defaults 0 0

# 删除以#开头的行

[[email protected] ~]# sed ‘/^#/d’ /etc/fstab

UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 / ext4 defaults 1 1

UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot ext4 defaults 1 2

UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap swap defaults 0 0

/dev/sr0 /media/cdrom iso9660 defaults 0 0

# 删除奇数行,显示偶数行

[[email protected] ~]# sed ‘1~2d’ sed.txt

2 #

4 # Created by anaconda on Thu Nov 30 17:46:50 2017

6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’

8 #

10 UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot ext4 defaults 1 2

12 /dev/sr0 /media/cdrom iso9660 defaults 0 0

2.p: 打印模式空间中的内容

[[email protected] ~]# sed ‘3d’ sed.txt

1

2 #

4 # Created by anaconda on Thu Nov 30 17:46:50 2017

5 #

6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’

7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

8 #

9 UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 / ext4 defaults 1 1

10 UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot ext4 defaults 1 2

11 UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap swap defaults 0 0

12 /dev/sr0 /media/cdrom iso9660 defaults 0 0

# -n 不显示模式空间中的内容,

[[email protected] ~]# sed -n ‘3d’ sed.txt

# 首先显示模式空间中没有被匹配到的行(偶数行),然后再显示被匹配到的指定的行,执行p命令打印出第3行,

# 因为默认模式空间中的内容都会被显示出来,所以第三行还会再显示一遍。对比d命令,是把模式空间中匹配到的行

# 删除,就显示不出来了

[[email protected] ~]# sed ‘3p’ sed.txt

1

2 #

3 # /etc/fstab

3 # /etc/fstab

4 # Created by anaconda on Thu Nov 30 17:46:50 2017

5 #

6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’

7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

8 #

9 UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 / ext4 defaults 1 1

10 UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot ext4 defaults 1 2

11 UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap swap defaults 0 0

12 /dev/sr0 /media/cdrom iso9660 defaults 0 0

# 首先,-n选项指明不显示模式空间中的内容,然后命令p指明显示指定的行

[[email protected] ~]# sed -n ‘3p’ sed.txt

3 # /etc/fstab

[[email protected] ~]# sed -n ‘1~2p’ sed.txt

1

3 # /etc/fstab

5 #

7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

9 UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 / ext4 defaults 1 1

11 UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap swap defaults 0 0

3.i text,a text和c text:在行后面追加文本;支持使用n实现多行追加

# 默认会显示模式空间中的所有内容(因为没有对第3行执行d命令,所以也会显示出来),然后再在行前插入一行

[[email protected] ~]# sed ‘3i new lines’ sed.txt

1

2 #

new lines

3 # /etc/fstab

4 # Created by anaconda on Sun Nov 6 10:30:14 2016

5 #

6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’

7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

8 #

9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

# 在行后插入一行

[[email protected] ~]# sed ‘3a new lines’ sed.txt

1

2 #

3 # /etc/fstab

new lines

4 # Created by anaconda on Sun Nov 6 10:30:14 2016

5 #

6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’

7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

8 #

9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

# n 实现多行追加

[[email protected] ~]# sed ‘3a new linesntaotaonxiuxiu’ sed.txt

1

2 #

3 # /etc/fstab

new lines

taotao

xiuxiu

4 # Created by anaconda on Sun Nov 6 10:30:14 2016

5 #

6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’

7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

8 #

9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

#在匹配的模式后增加内容

[[email protected] ~]# sed ‘/^UUID/a # add new line base on UUID’ /etc/fstab

#

# /etc/fstab

# Created by anaconda on Sun Nov 6 10:30:14 2016

#

# Accessible filesystems, by reference, are maintained under ‘/dev/disk’

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

# add new line base on UUID

UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

# add new line base on UUID

UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

# add new line base on UUID

UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

# add new line base on UUID

# 将指定的行替换为此处的“text”

[[email protected] ~]# sed ‘/^UUID/c # add new line base on UUID’ /etc/fstab

#

# /etc/fstab

# Created by anaconda on Sun Nov 6 10:30:14 2016

#

# Accessible filesystems, by reference, are maintained under ‘/dev/disk’

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

# add new line base on UUID

# add new line base on UUID

# add new line base on UUID

# add new line base on UUID

4.w /path/to/somefile:把指定的内容另存至/path/to/somefile路径所指定的文件中。

[[email protected] ~]# sed -n ‘/^[^#]/p’ /etc/fstab

UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

[[email protected] ~]# sed ‘/^[^#]/w /tmp/fstab.new’ /etc/fstab

#

# /etc/fstab

# Created by anaconda on Sun Nov 6 10:30:14 2016

#

# Accessible filesystems, by reference, are maintained under ‘/dev/disk’

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

[[email protected] ~]# cat /tmp/fstab.new

UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

5.r /path/from/somefile:在文件的指定位置插入另一个文件的所有内容,完成文件合并。

[[email protected] ~]# sed ‘3r /etc/issue’ sed.txt

1

2 #

3 # /etc/fstab

S

Kernel r on an m

Mage Education Learning Services

http://www.magedu.com

4 # Created by anaconda on Sun Nov 6 10:30:14 2016

5 #

6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’

7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

8 #

9 UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

10 UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

11 UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

12 UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

6.= : 为模式空间中的行打印行号

[[email protected] ~]# sed ‘/^UUID/=’ /etc/fstab

#

# /etc/fstab

# Created by anaconda on Sun Nov 6 10:30:14 2016

#

# Accessible filesystems, by reference, are maintained under ‘/dev/disk’

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

9

UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

10

UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

11

UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

12

UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

7.! :模式空间中匹配行取反处理

# 删除非#号开头的行,注意“!”的位置

[[email protected] ~]# sed ‘/^#/!d’ /etc/fstab

#

# /etc/fstab

# Created by anaconda on Sun Nov 6 10:30:14 2016

#

# Accessible filesystems, by reference, are maintained under ‘/dev/disk’

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

8.s///查找替换,及多点编辑

[[email protected] ~]# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Sun Nov 6 10:30:14 2016

#

# Accessible filesystems, by reference, are maintained under ‘/dev/disk’

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

# 删除/etc/fstab文件中所有以#开头的行的行首的#及#后面所有的空白字符

[[email protected] ~]# sed ‘[email protected]^#[[:space:]]*@@’ /etc/fstab

/etc/fstab

Created by anaconda on Sun Nov 6 10:30:14 2016

Accessible filesystems, by reference, are maintained under ‘/dev/disk’

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe / xfs defaults 0 0

UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot xfs defaults 0 0

UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr xfs defaults 0 0

UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap swap defaults 0 0

# 多点编辑,同时把UUID开头的行删除

[[email protected] ~]# sed -e ‘[email protected]^#[[:space:]]*@@’ -e ‘/^UUID/d’ /etc/fstab

/etc/fstab

Created by anaconda on Sun Nov 6 10:30:14 2016

Accessible filesystems, by reference, are maintained under ‘/dev/disk’

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符

[[email protected] ~]# sed ‘[email protected]^[[:space:]][email protected]@’ /etc/grub2.cfg

#删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符

[[email protected] ~]# sed ‘[email protected]^#[[:space:]]*@@’ /etc/fstab

#输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;

[[email protected] ~]# echo “/var/log/messages/” | sed ‘[email protected][^/]+/[email protected]@’

[[email protected] ~]# echo “/var/log/messages” | sed -r ‘[email protected][^/]+/[email protected]@’

★保持空间

sed 除了“模式空间”(pattern space),还有一个“hold space”的内存空间,称之为 保持空间。

所谓保持空间,就是对于模式空间处理过的行,可能还有其他的处理,因此可以先把处理过的行“传送”至保存空间,然后再后续的处理中再次“传送”回模式空间中。 这就类 似于加工车间和仓库的概念,好比模式空间为加工车间,保持空间为仓库,不过这里的仓库存放的都是些半成品的产品

★高级编辑命令
h:把模式空间中的内容覆盖至保持空间中;
H:把模式空间中的内容追加至保持空间中;
g:从保持空间取出数据覆盖至模式空间;
G:从保持空间取出内容追加至模式空间;
x:把模式空间中的内容与保持空间中的内容进行互换;
n:覆盖读取匹配到的行的下一行至模式空间;
N:追加匹配到的行的下一行至模式空间;
d:删除模式空间中的行;
D:删除当前模式空间开端至n的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed
★示例
sed  -n  ‘n;p’  FILE:显示偶数行;
[[email protected] ~]# cat -n /etc/fstab
1
2        #
3        # /etc/fstab
4        # Created by anaconda on Thu Nov 30 17:46:50 2017
5        #
6        # Accessible filesystems, by reference, are maintained under ‘/dev/disk’
7        # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
8        #
9        UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 /                       ext4    defaults        1 1
10        UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot                   ext4    defaults        1 2
11        UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap                    swap    defaults        0 0
12        /dev/sr0                                  /media/cdrom           iso9660  defaults        0 0
[[email protected] ~]# sed -n ‘n;p’ /etc/fstab
#
# Created by anaconda on Thu Nov 30 17:46:50 2017
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
#
UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot                   ext4    defaults        1 2
/dev/sr0                                  /media/cdrom           iso9660  defaults        0 0
 
sed  ‘1!G;h;$!d’  FILE:逆序显示文件的内容;
[[email protected] ~]# sed ‘1!G;h;$!d’ /etc/fstab
/dev/sr0                                  /media/cdrom           iso9660  defaults        0 0
UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap                    swap    defaults        0 0
UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot                   ext4    defaults        1 2
UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 /                       ext4    defaults        1 1
#
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
#
# Created by anaconda on Thu Nov 30 17:46:50 2017
# /etc/fstab
#
 
sed  ‘$!d’  FILE:取出最后一行;
[[email protected] ~]# sed ‘$!d’ /etc/fstab
/dev/sr0                                  /media/cdrom           iso9660  defaults        0 0
 
sed  ‘$!N;$!D’ FILE:取出文件后两行;
[[email protected] ~]# sed ‘$!N;$!D’ /etc/fstab
UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap                    swap    defaults        0 0
/dev/sr0                                  /media/cdrom           iso9660  defaults        0 0
 
 
sed ‘/^$/d;G’ FILE:删除原有的所有空白行,而后为所有的非空白行后添加一个空白行;
[[email protected] ~]# sed ‘/^$/d;G’ /etc/fstab
#
 
# /etc/fstab
 
# Created by anaconda on Thu Nov 30 17:46:50 2017
 
#
 
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
 
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
 
#
 
UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 /                       ext4    defaults        1 1
 
UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot                   ext4    defaults        1 2
 
UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap                    swap    defaults        0 0
 
/dev/sr0                                  /media/cdrom           iso9660  defaults        0 0
 
sed  ‘n;d’  FILE:显示奇数行;(先读第1行,再第2行把第1行覆盖,然后再删除第2行)
[[email protected] ~]# sed ‘n;d’ /etc/fstab
 
# /etc/fstab
#
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 /                       ext4    defaults        1 1
UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap                    swap    defaults        0 0
 
sed ‘G’ FILE:在原有的每行后方添加一个空白行;
[[email protected] ~]# sed ‘G’ /etc/fstab
 
 
#
 
# /etc/fstab
 
# Created by anaconda on Thu Nov 30 17:46:50 2017
 
#
 
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
 
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
 
#
 
UUID=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 /                       ext4    defaults        1 1
 
UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot                   ext4    defaults        1 2
 
UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap                    swap    defaults        0 0
 
/dev/sr0                                  /media/cdrom           iso9660  defaults        0 0

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90679

运维部落稿源:运维部落 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » 第五周 程序包管理

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录