rpm及yum的應(yīng)用以及制定任務(wù)計劃和sed的應(yīng)用

簡述rpm與yum命令的常見選項,并舉例:

CentOS系統(tǒng)上rpm命令管理程序包:

? ? ? ? ?安裝、升級、卸載、查詢和校驗、數(shù)據(jù)庫維護

rpm命令:rpm? [OPTIONS]? [PACKAGE_FILE]

? ? ? ? 安裝:-i,--instal

? ? ? ? 升級:-U,--update,-F,--freshen

? ? ? ? 卸載:-e,--erase

? ? ? ? 查詢:-q,--query

? ? ? ? 校驗:-V,--verify

? ? ? ? 數(shù)據(jù)庫維護:--rebuildb,--initdb

安裝:

? ? ? ? rpm? {-i | --install}? [install-options]? PACKAGE_FILE...

? ? ? ? ? ? ? ? rpm? -ivh? PACKAGE_FILE ...

? ? ? ? ? ? ? ? GENERAL OPTIONS:

? ? ? ? ? ? ? ? ? ? ? ? -v:verbose,詳細信息

? ? ? ? ? ? ? ? ? ? ? ? -vv:更詳細的輸出

? ? ? ? ? ? ? ? [install-options]:

? ? ? ? ? ? ? ? ? ? ? ? -h:hash marks 輸出進度條:每個#表示2%的進度;

? ? ? ? ? ? ? ? ? ? ? ? --test:測試安裝,檢查并報告依賴關(guān)系及沖突消息等;

? ? ? ? ? ? ? ? ? ? ? ? --nodeps:忽略依賴關(guān)系; 不建議;

? ? ? ? ? ? ? ? ? ? ? ? --replacepkgs:重新安裝

? ? ? ? ? ? ? ? ? ? ? ? 注意:rpm可以自帶腳本;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 四類:--notscripts:不運行腳本

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? preinstall:安裝過程開始之前運行的腳本,%pre,--nopre

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? postinstall:安裝過程完成之后運行的腳本,%post,--nopost

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? preuninstall:卸載過程真正開始執(zhí)行之前運行的腳本,%preun,--nopreun

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? postuninstall:卸載過程完成之后運行的腳本,%postun,--nopostun

? ? ? ? ? ? ? ? ? ? ????--nosignature:不檢查包簽名信息,不檢查來源合法性;

? ? ? ? ? ? ? ? ? ? ????--nodigest:不檢查包完整性信息

例1:安裝

? ? 升級:

? ? ? ? rpm? {-U|--upgrade}? [install-options]? PACKAGE_FILE ...

? ? ? ? rpm? {-F|--freshen}? [install--options]? PACKAGE_FILE ...

? ? ? ? ? ? ? ? -U:升級或安裝;

? ? ? ? ? ? ? ? -F:升級

? ? ? ? ? ? ? ? rpm? -Uvh? PACKAGE_FILE ...

? ? ? ? ? ? ? ? rpm? -Fvh? PACKAGE_FILE ...

? ??????[install-options]:

? ? ? ? ? ? ? ? --oldpackage:降級;

? ? ? ? ? ? ? ? --force:強制升級;

注意:(1)不要對內(nèi)核做升級操作;linux支持多內(nèi)核版本并存,因此,直接安裝新版本內(nèi)核;

? ? ? ? ? ? ? (2)如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

例2:因上一圖中已安裝,所以此處提示已經(jīng)安裝

卸載:

? ? ? ? rpm? {-e|--erase}? [--allmatches]? [--nodeps]? [--noscripts]? [--test]? PACKAGE_NAME ...

? ? ? ? ? ? ? ? --allmatches:卸載所有匹配指定名稱的程序包的各版本;

? ? ? ? ? ? ? ? --nodeps:忽略依賴關(guān)系

? ? ? ? ? ? ? ? --test:測試卸載,dry run模式(干跑)

例3:卸載

查詢:

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

? ? ? ? [select-options]

? ? ? ? ? ? ? ? PACKAGE_NAME:查詢指定的程序包是否已經(jīng)安裝,及其版本;

? ? ? ? ? ? ? ? -a,--all:查詢所有已經(jīng)安裝過的包;

? ? ? ? ? ? ? ? -f? FILE:查詢指定的文件由哪個程序包安裝生成;

? ? ? ? ? ? ? ? -p,--package? PACKAGE_FILE:用于實現(xiàn)對未安裝的程序包執(zhí)行查詢操作;

? ? ? ? ? ? ? ? --whatprovides CAPABTLITY:查詢指定的CAPABILITY由哪個程序包提供;

? ? ? ? ? ? ? ? --whatrequires CAPABILITY:查詢指定的CAPAGILITY被哪個包所依賴;

? ? ? ? [query-options]

? ? ? ? ? ? ? ? --changelog:查詢rpm包的changlog;

? ? ? ? ? ? ? ? -l,--list:查詢安裝生成的所有文件列表;

? ? ? ? ? ? ? ? -i,--info:程序包相關(guān)的信息,版本號、大小、所屬的包組等;

? ? ? ? ? ? ? ? -c,--configfiles:查詢指定的程序包提供的配置文件;

? ? ? ? ? ? ? ? -d,--docfiles:查詢指定的程序包提供的文檔;

? ? ? ? ? ? ? ? --provides:列出指定的程序包提供的所有的CAPABILITY;

? ? ? ? ? ? ? ? -R,--requires:查詢指定的程序包的依賴關(guān)系;

? ? ? ? ? ? ? ? --scripts:查看程序包自帶的腳本片斷;

? ? ? ? 用法:

? ? ? ? ? ? ? ? -qi? PACKAGE,-qf? FILE,-qc? PACKAGE,-ql? PACKAGE,-qd? PACKAGE

? ? ? ? ? ? ? ? -qpi? PACKAGE_FILE,-qpl? PACKAGE_FILE,-qpc? PACKAGE_FILE,...

例4:檢查已安裝包的內(nèi)容

例5:檢查未安裝包的一些內(nèi)容


檢驗:

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

? ? ? ??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 mTime differs

? ??????P caPabilities differ

獲取并導(dǎo)入信任的包制作者的密鑰:

? ? ? ? 對于CentOS發(fā)行版來說:rpm? --import? /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

? ? ? ? 驗證:

? ? ? ? ? ? ? ? (1)安裝此組織簽名的程序時,會自動執(zhí)行驗證;

? ? ? ? ? ? ? ? (2)手動驗證:rpm? -K? PACKAGE_FILE

數(shù)據(jù)庫重建:

? ? ? ? rpm管理器數(shù)據(jù)庫路徑:/var/lib/rpm/

? ? ? ? ? ? ? ? 查詢操作:通過此處的數(shù)據(jù)庫進行:

? ? ? ? 獲取幫助:

? ? ? ? ? ? ? ? CentOS? 6:man? rpm

? ? ? ? ? ? ? ? CentOS? 7:man? rpmdb

? ? ? ? ? ? ? ? rpm? {--initdb|--rebuilddb}? [--dbpath? DIRECTORY]? [--root? DIRECTORY]

? ? ? ? ? ? ? ? ? ? ? ? -initdb:初始化數(shù)據(jù)庫,當前無任何數(shù)據(jù)庫可初始化創(chuàng)建一個新的;當前有時不執(zhí)行任何操作;

? ? ? ? ? ? ? ? ? ? ? ? --rebuilddb:重新構(gòu)建,通過讀取當前系統(tǒng)上所有已經(jīng)安裝過的程序包進行重新創(chuàng)建

例6:重建數(shù)據(jù)庫

yum repository:yum? repo(yum倉庫)

? ? ? ? 存儲了眾多rpm包,以及包的相關(guān)的元數(shù)據(jù)文件(放置于特定目錄下:repodate);

? ? ? ? 文件服務(wù)器:

? ? ? ? ? ? ? ? ftp://

? ? ? ? ? ? ? ? http://

? ? ? ? ? ? ? ? fpt://

? ? ? ? ? ? ? ? file:///

yum客戶端:

? ? ? ? 配置文件:

? ? ? ? ? ? ? ? /etc/yum.conf :為所有倉庫提供公共配置

? ? ? ? ? ? ? ? /etc/yum.repos.d/*.repo :為倉庫的指向提供配置

? ? ? ? 倉庫指向的定義:

? ? ? ? ?[repositoryID]

? ? ? ? name=Some name for this repository? ? ? ? ? ? ? ? ? ? (描述)

? ? ? ? baseurl=url://path/to/repository/? ? ? ? ? ? ? ? ? ? ? (路徑,可指明多個URL)

? ? ? ? enabled={1|0}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (默認啟用為1)

? ? ? ? gpgcheck={1|0}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (檢查簽名)

? ? ? ? gpgkey=URL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(密鑰文件)

? ? ? ? enbalegroups={1|0}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(是否支持在組織上管理批量的程序包)

? ? ? ? failovermethod={roundrobin|prioryity}? ? ? ? (多個baseurl的選擇方式)

? ? ? ? ? ? ? ? 默認為:roundrobin,意為隨機挑選;

? ? ? ? cost=

? ? ? ? ? ? ? ? 默認為1000

yum命令的用法:

? ? ? ? yum? [options]? [command]? [package ...]

? ? ? ? command is of :

? ??????????* install package1 [package2] [...]

? ??????????* update [package1] [package2] [...]

? ??????????* update-to [package1] [package2] [...]

? ??????????* check-update

? ??????????* upgrade [package1] [package2] [...]

? ??????????* upgrade-to [package1] [package2] [...]

? ??????????* distribution-synchronization [package1] [package2] [...]

? ??????????* remove | erase package1 [package2] [...]

? ??????????* list [...]

? ??????????* info [...]

? ??????????* provides | whatprovides feature1 [feature2] [...]

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

? ??????????* makecache

? ??????????* groupinstall group1 [group2] [...]

? ??????????* groupupdate group1 [group2] [...]

? ??????????* grouplist [hidden] [groupwildcard] [...]

? ??????????* groupremove group1 [group2] [...]

? ??????????* groupinfo group1 [...]

? ??????????* search string1 [string2] [...]

? ??????????* shell [filename]

? ??????????* resolvedep dep1 [dep2] [...]

? ??????????* localinstall rpmfile1 [rpmfile2] [...]??

? ??????????????????(maintained for legacy reasons only - use install)

? ??????????* localupdate rpmfile1 [rpmfile2] [...]

? ??????????????????(maintained for legacy reasons only - use update)

? ??????????* reinstall package1 [package2] [...]

? ??????????* downgrade package1 [package2] [...]

? ??????????* deplist package1 [package2] [...]

? ??????????* repolist [all|enabled|disabled]

? ??????????* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]

? ??????????* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

? ??????????* check

? ??????????* help [command]

顯示倉庫列表:

? ? ? ? repolist? [all|enabled|disabled]

顯示程序包:

? ? ? ? list

? ? ? ? ? ? ? ? # yum list [all | glob_exp1] [glob_exp2] [...]

? ? ? ? ? ? ? ? # yum list {available|installed}updates} [glob_exp2] [...]

安裝程序包:

? ? ? ? install package1 [package2] [...]

? ? ? ? reinstall package1 [package2] [...] (重新安裝)

升級程序包:

? ? ? ? update [package1] [package2] [...]

? ? ? ? downgrade package1 [package2] [...] (降級)

檢查可用升級:

? ? ? ? check-update

卸載程序包:

? ? ? ? remove | erase package1 [package2] [...]

查看程序包infomation:

? ? ? ? info? [...]

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

? ? ? ? provides } whatprovides feature1 [feature2] [...]

清理本地緩存:

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

構(gòu)建緩存:

? ? ? ? makecache

搜索:

? ??????search string1 [string2] [...]

? ??????以指定的關(guān)鍵字搜索程序包名及summary信息;

查看指定包所依賴的capabilities :

? ??????deplist package1 [package2] [...]

查看yum事務(wù)歷史:

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

安裝及升級本地程序包:

? ??????* localinstall rpmfile1 [rpmfile2] [...]

? ??????????????(maintained for legacy reasons only - use install)

? ??????* localupdate rpmfile1 [rpmfile2] [...]

? ??????????????(maintained for legacy reasons only - use update)

包組管理的相關(guān)命令:

? ??????* groupinstall group1 [group2] [...]

? ??????* groupupdate group1 [group2] [...]

? ??????* grouplist [hidden] [groupwildcard] [...]

? ??????* groupremove group1 [group2] [...]

? ??????* groupinfo group1 [...]

yum的命令行選項:

? ? ? ? --nogpgcheck:禁止進行g(shù)pg check;

? ? ? ? -y:自動回答為“yes”;

? ? ? ? -q:靜默模式;

? ? ? ? --disbalerepo=repoidglob:臨時禁用此處指定的repo;

? ? ? ? --enablerepo=repoidglog:臨時啟用此處指定的repo;

? ? ? ? --noplugins:禁用所有插件;

yum的repo配置文件中可用的變量:

? ??????$releasever: 當前OS的發(fā)行版的主版本號;

? ??????$arch: 平臺;

? ??????$basearch:基礎(chǔ)平臺;

? ??????$YUM0-$YUM9

? ??????http://mirrors.magedu.com/centos/$releasever/$basearch/os

自建yum倉庫,分別為網(wǎng)絡(luò)源和本地源

創(chuàng)建本地源yum倉庫:

? ???????createrepo? [options] <directory>?

如何使用光盤當作本地yum倉庫:

????????(1)掛載光盤至某目錄,例如:/media/cdrom?

? ???????????????#mount -r -t iso9660 /dev/cdrom /media/cdrom?

????????(2)創(chuàng)建配置文件?

? ??????????????[CentOS7]?

? ??????????????name=

? ??????????????baseurl=

? ??????????????gpgcheck=若啟用則需要gpgkey

? ??????????????gpgkey=不啟用gpgcheck則無需寫

? ??????????????enabled=默認為1 ,可不寫??

例:

1、創(chuàng)建掛載光盤的目錄,并找到/etc/yum.repos.d下以.repo結(jié)尾的文件

2、編輯文件鍵入以下內(nèi)容,gpgcheck為1時需要寫入gpgkey并指明gpgkey的URL

3、makecache構(gòu)建緩存并用repolist驗證yum源是否配置成功

創(chuàng)建網(wǎng)絡(luò)源

? ? 1、創(chuàng)建網(wǎng)絡(luò)源之前建議備份/etc/yum.repo.d/CentOS-Base.repo

? ? 2下載新對應(yīng)的CentOS-Base.repo 到/etc/yum.repos.d/要根據(jù)自己的版本來下載,高版本的linux不能使用低版本的yum源,可從阿里源或網(wǎng)易源等網(wǎng)站下載

? ??????wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3、運行yum makecachesg生成緩存,成功則配置成功

簡述at和crontab命令,制定?每周三凌晨三、五點10分執(zhí)行某個腳本,輸出當前時間,時間格式為?2017-12-28?10:00:00

at命令:單次執(zhí)行一個任務(wù),不能周期性的自動執(zhí)行

? ? ? ? at? [OPTION]... TIME

? ? ? ? ? ? ? ? TIME:

? ? ? ? ? ? ? ? ? ? ? ? HH:MM? [YYYY-mm-dd]

? ? ? ? ? ? ? ? ? ? ? ? noon,midnight,teatime,tomorrow

????????????????????????now+#:從現(xiàn)在起+多少時間

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UNIT:minutes,hours,days,weeks

? ? ? ? ? ? ? ? at的作業(yè)有隊列,用單個字母表示,默認都使用a隊列;

? ? ? ? ? ? ? ? 常用選項:

? ? ? ? ? ? ? ? ? ? ? ? -l:查看作業(yè)隊列,相當于atq

? ? ? ? ? ? ? ? ? ? ? ? -f:/PATH/FROM/SOMEFILE:從指定文件中讀取作業(yè)任務(wù),而不用再交互式輸入;

? ? ? ? ? ? ? ? ? ? ? ? -d:刪除指定的作業(yè),相當于atrm;

? ? ? ? ? ? ? ? ? ? ? ? -c:查看指定作業(yè)的具體內(nèi)容;

? ? ? ? ? ? ? ? ? ? ? ? -q? QUEUE:指明隊列;

? ? ? ? ? ? ? ? 注意:作業(yè)執(zhí)行結(jié)果是以郵件發(fā)送給提交作業(yè)的用戶

例:制定在16:00執(zhí)行一次ls,以及-l查看任務(wù)隊列

cron命令:周期性任務(wù)計劃? ? ? ?

????????確保crond守護進程(daemon)處于運行狀態(tài):? ? ? ? ? ? ? ?

????????????????CentOS 7:? ? ? ? ? ? ? ? ? ? ? ?

????????????????????????systemctl? status? crond.service? ? ? ? ? ? ? ?

????????????????CentOS? 6:? ? ? ? ? ? ? ? ? ? ? ?

????????????????????????service? crond? status

向crond提交作業(yè)的方式不同于at,它需要使用專用的配置文件,此文件有固定格式,不建議使用文本編輯器直接編輯此文件;要使用crontab命令;? ? ? ?

????????cron任務(wù)分為兩類:? ? ? ? ? ? ? ?

????????????????系統(tǒng)cron任務(wù):主要用于實現(xiàn)系統(tǒng)自身的維護;? ? ? ? ? ? ? ? ? ? ? ?

????????????????????????手動編輯:/etc/crontab文件?

? ? ? ? ? ? ? ? 用戶cron任務(wù):

? ? ? ? ? ? ? ? ? ? ? ? 命令crontab命令

? ? ? ? 系統(tǒng)cron的配置格式 :/etc/crontab

? ? ? ? ? ? ? ? SHELL=/bin/bash

? ? ? ? ? ? ? ? PATH=/sbin:/bin:/usr/sbin:/usr/bin

? ? ? ? ? ? ? ? MAILTO=root

? ??????

注意:

? ? ? ? (1)每一行定義一個周期性任務(wù),共7個字段;

? ??????????????* * * * * : 定義周期性時間

????????????????user-name : 運行任務(wù)的用戶身份

????????????????command to be executed:任務(wù)

????????(2) 此處的環(huán)境變量不同于用戶登錄后獲得的環(huán)境,因此,建議命令使用絕對路徑,或者自定義PATH環(huán)境變量;

????(3) 執(zhí)行結(jié)果郵件發(fā)送給MAILTO指定的用戶

用戶的cron的配置格式:/var/spool/cron/USERNAME

? ? ? ? SHELL=/bin/bash

? ? ? ? PATH=/sbin:/bin:/usr/sbin:/usr/bin

? ? ? ? MAILTO=root


注意:

????????(1) 每行定義一個cron任務(wù),共6個字段;

????????(2) 此處的環(huán)境變量不同于用戶登錄后獲得的環(huán)境,因此,建議命令使用絕對路徑,或者自定義PATH環(huán)境變量;

????????(3) 郵件發(fā)送給當前用戶;

時間表示法:

? ? ? ? (1)特定值;

? ? ? ? ? ? ? ? 給定時間點有效取值范圍內(nèi)的值;

? ? ? ? ? ? ? ? ? ? ? ? 注意:day of week和day of month一般不同時使用;

? ? ? ? (2)*

? ? ? ? ? ? ? ? 給定時間點上有效取值范圍內(nèi)的所有值;表“每..”

? ? ? ? (3)離散取值:,

? ? ? ? ? ? ? ? 在時間點上使用逗號分隔的多個值;

? ? ? ? ? ? ? ? ? ? ? ? #,#,#

? ? ? ? (4)連續(xù)取值:-

? ? ? ? ? ? ? ? 在時間點上使用-連接開關(guān)和結(jié)束

? ? ? ? ? ? ? ? ? ? ? ? #-#

? ? ? ? (5)在指定時間點上,定義步長:

? ? ? ? ? ? ? ? /#:#即步長;

? ??????????????注意:

????????????????????????(1) 指定的時間點不能被步長整除時,其意義將不復(fù)存在;

????????????????????????(2) 最小時間單位為“分鐘”,想完成“秒”級任務(wù),得需要額外借助于其它機制;

????????????????????????????????定義成每分鐘任務(wù):而在利用腳本實現(xiàn)在每分鐘之內(nèi),循環(huán)執(zhí)行多次;

示例:

(1) 3 * * * *:每小時執(zhí)行一次;每小時的第3分鐘;

(2) 3 4 * * 5:每周執(zhí)行一次;每周5的4點3分;

(3) 5 6 7 * *:每月執(zhí)行一次;每月的7號的6點5分;

(4) 7 8 9 10 *:每年執(zhí)行一次;每年的10月9號8點7分;

(5) 9 8 * * 3,7:每周三和周日的8點9分執(zhí)行一次;

(6) 0 8,20 * * 3,7:每周三和周日的8點和20點執(zhí)行一次

(7) 0 9-18 * * 1-5:每周一至周五的9點至18點之間一直執(zhí)行

(8) */5 * * * *:每5分鐘執(zhí)行一次某任務(wù);

crontab命令:

????????crontab [-u user] [-l | -r | -e] [-i]

????????????????-e:編輯任務(wù);

????????????????-l:列出所有任務(wù);

????????????????-r:移除所有任務(wù);即刪除/var/spool/cron/USERNAME文件;

????????????????-i:在使用-r選項移除所有任務(wù)時提示用戶確認;

????????????????-u user:root用戶可為指定用戶管理cron任務(wù);

? ? ? ? 注意:運行結(jié)果以郵件通知給當前用戶;如果拒絕接收郵件;

? ? ? ? ? ? ? ? (1)COMMAND? >? /dev/null? 只收錯誤信息

? ? ? ? ? ? ? ? (2)COMMAND? &>? /dev/null? 任何信息都不通知

? ??????注意:定義COMMAND時,如果命令需要用到%,需要對其轉(zhuǎn)義;但放置于單引號中的%不用轉(zhuǎn)義亦可;

1、設(shè)置腳本:

? ??????

2、編輯crontab任務(wù):

? ??????

3、查看任務(wù)列表:

? ??????

簡述sed常用操作命令,并舉例

sed命令:

? ??????sed [OPTION]... 'script' [input-file] ...

? ? ? ? ? ? ? ? script:地址定界編輯命令

? ? ? ? ? ? ? ? 常用選項:

? ? ? ? ? ? ? ? ? ? ? ? -n:不輸出模式空間中的內(nèi)容至屏幕;

? ? ? ? ? ? ? ? ? ? ? ? -e script,--expression=script:多點編輯(多命令);

? ? ? ? ? ? ? ? ? ? ? ? ? ? 例:~]# sed -e 's@^#[[:space:]]*@@' -e '/^UUID/d' /etc/fstab

? ? ? ? ? ? ? ? ? ? ? ? -f? /PATH/TO/SED_SCRIPT_FILE:每行一個編輯命令;

? ? ? ? ? ? ? ? ? ? ? ? -r,--regexp-extended:支持使用擴展正則表達式;

? ? ? ? ? ? ? ? ? ? ? ? -i[SUFFIX],--in-place[=SUFFIX]:直接編輯原文件;

? ? ? ? 地址定界:

? ? ? ? ? ? ? ? (1)空地址:對全文進行處理;? ? ??

? ? ? ? ? ? ? ? (2)單地址:

? ? ? ? ? ? ? ? ? ? ? ? #:指定行

? ? ? ? ? ? ? ? ? ? ? ? /pattern/:被此模式所匹配到的每一地;

? ? ? ? ? ? ? ? (3)地址范圍

? ? ? ? ? ? ? ? ? ? ? ? #1,#2:#1到#2行之間

? ? ? ? ? ? ? ? ? ? ? ? #1,+#2:#1到#1+#2之間

? ? ? ? ? ? ? ? ? ? ? ? #,/pat1/:#到模式1之間

? ? ? ? ? ? ? ? ? ? ? ? /pat1/,/pat2/:模式1到模式2之間

? ? ? ? ? ? ? ? ? ? ? ? $:最后一行

? ? ? ? ? ? ? ? (4)步進:~

? ? ? ? ? ? ? ? ? ? ? ? 1~2:所有奇數(shù)行

? ? ? ? ? ? ? ? ? ? ? ? 2~2:所有偶數(shù)行

? ? ? ? 編輯命令:

? ? ? ? ? ? ? ? d:刪除;

? ? ? ? ? ? ? ? p:顯示模式空間中的內(nèi)容;

? ? ? ? ? ? ? ? a? \text :在行后面追加文本“text”,支持使用\n實現(xiàn)多行追加;

? ? ? ? ? ? ? ? i? \text:在行前面插入文本“text”,支持使用\n實現(xiàn)多行插入;

? ? ? ? ? ? ? ? c? \text:把匹配到的行替換為此處指定的文本“text”;

? ? ? ? ? ? ? ? w? /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中;

? ? ? ? ? ? ? ? r? /PATH/FROM/SOMEFILE:讀取指定文件的內(nèi)容至當前文件被模式匹配到的行后面;文件合并;

? ? ? ? ? ? ? ? =:為模式匹配到的行打印行號;

? ? ? ? ? ? ? ? !:條件取反;取反符號放在模式后和命令前的位置

? ? ? ? ? ? ? ? ? ? ? ? 地址定界!編輯命令;

? ? ? ? ? ? ? ? s///:查找替換,其分隔符可自行指定,常用的有s@@@,s###等;

? ? ? ? ? ? ? ? ? ? ? ? 替換標記:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? g:全局替換;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? w? /PATH/TO/SOMEFILE:將替換成功的結(jié)果保存至指定文件中;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p:顯示替換成功的行;

? ? ? ? 高級編輯命令:

? ? ? ? ? ? ? ? h:把模式空間中的內(nèi)容覆蓋至保持空間中;

????????????????H:把模式空間中的內(nèi)容追加至保持空間中;

????????????????g:把保持空間中的內(nèi)容覆蓋至模式空間中;

????????????????G:把保持空間中的內(nèi)容追加至模式空間中;

????????????????x:把模式空間中的內(nèi)容與保持空間中的內(nèi)容互換;

????????????????n:覆蓋讀取匹配到的行的下一行至模式空間中;

????????????????N:追加讀取匹配到的行的下一行至模式空間中;

????????????????d:刪除模式空間中的行;

????????????????D:刪除多行模式空間中的所有行;

例1:刪除/etc/fstab所有以UUID號開頭的行

例2:刪除/etc/grub2.cf所有以空白符開頭的行的行首的所有空白字符

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容