簡述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所有以空白符開頭的行的行首的所有空白字符
