sed工具;
用法:
sed [option]… ‘script’ inputfile…
常用選項:
-n:不輸出模式空間內容到屏幕,即不自動打印
[root@localhost ~]# sed -n -e “2p” -e “6p” f1 (2;6代表處理第幾行)
-e: 多點編輯
-f:/PATH/SCRIPT_FILE: 從指定文件中讀取編輯腳本
-r: 支持使用擴展正則表達式
-i.bak: 備份文件并原處編輯
script: ‘地址命令’
sed工具;
地址定界:
(1) 不給地址:對全文進行處理
[root@localhost ~]# sed ‘p’ f1* (打印所有)* 號代表所有】
[root@localhost ~]# sed ‘2p’ f1 (自動默認行打?。?代表指定;后跟文件名】
[root@localhost ~]# ifconfig ens33 |sed -n ‘2p’ (打印行ip地址)第二行;2代表指定】
(2) 單地址:
[root@localhost ~]# sed -n ‘$p’ /etc/passwd ($:最后一行)
[root@localhost ~]# sed -n ‘2p’ /etc/passwd (#: 指定的行)
[root@localhost ~]# sed -n ‘/root/p’ /etc/passwd (模式指定)
/pattern/:被此處模式所能夠匹配到的每一行
(3) 地址范圍:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
[root@localhost ~]# sed -n ‘/^root/p’ /etc/passwd (查看root開頭的行;^ 使用脫字符)
[root@localhost ~]# sed -n ‘2,5p’ /etc/passwd (顯示第幾行到第幾行)
#或[root@localhost ~]# sed -n ‘2,+3p’ /etc/passwd
[root@localhost ~]# sed -n ‘/^b/,/^f/p’ /etc/passwd (字母開頭指定)
[root@localhost ~]# sed -n ‘/^b/,/^ffff/p’ /etc/passwd
#(讀一行;處理一行)ffff是沒有的;從b后面全部有處理】
(4) ~:步進
[root@localhost ~]# sed -n ‘1~2p’ f1(奇數打?。?1~2 奇數行
[root@localhost ~]# sed -n ‘2~2p’ f1(偶數打?。?2~2 偶數行
sed工具;
編輯命令:
[root@localhost ~]# sed ‘2d’ f1 (指定刪除第幾行.并不打?。?br />d: 刪除模式空間匹配的行,并立即啟用下一輪循環
[root@localhost ~]# sed ‘2,5p’ f1 (指定打印輸出)
p:打印當前模式空間內容,追加到默認輸出之后
[root@localhost ~]# sed ‘2,3a===’ f1 (指定追加第幾行)
[root@localhost ~]# sed ‘2,5a\ ====’ f1 (可加\;后有空格)
a [\]text:在指定行后面追加文本;支持使用\n實現多行追加
[root@localhost ~]# sed ‘2,5i\ ====’ f1 (可加\;前有空格)
i [\]text:在行前面插入文本
[root@localhost ~]# sed ‘2,5c\ ====’ f1
c [\]text:替換行為單行或多行文本
[root@localhost ~]# sed ‘2,5w f2’ f1 (f2為指定)
w /path/somefile: 保存模式匹配的行至指定文件
[root@localhost ~]# sed ‘2,5r /etc/issue’ f1 (指定追加)
r /path/somefile:讀取指定文件的文本至模式空間中;匹配到的行后
[root@localhost ~]# sed -n ‘/root/p’ /etc/passwd (查看)
[root@localhost ~]# sed -n ‘/root/=’ /etc/passwd (顯示行號)
=: 為模式空間中的行打印行號
[root@localhost ~]# sed -n ‘/root/!p’ /etc/passwd (不包括root的行)
[root@localhost ~]# sed ‘2!d’ f1 (指定留下第二行,其它全刪,不打印)
!:模式空間中匹配行取反處理
sed工具;
s///:查找替換,支持使用其它分隔符,s@@@,s###
替換標記:
[root@localhost ~]# sed ‘s/root/administrator/’ /etc/passwd #(行內帶有root的替換)
[root@localhost ~]# sed ‘s/root/administrator/g’ /etc/passwd (全部替換)
g: 行內全局替換
p: 顯示替換成功的行
w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中
[root@localhost ~]# sed -r ‘s/(root)/\1er/g’ /etc/passwd (指定root后加)
[root@localhost ~]# sed -r ‘s/(root)/admin\1er/g’ /etc/passwd (指定root前后加)
[root@localhost ~]# sed -r ‘s/(.*)/\1dai/g’ /etc/passwd (dai放后)
[root@localhost ~]# sed -r ‘s/(.*)/dai\1/g’ /etc/passwd (dai放前)
sed示例
? sed ‘2p’ /etc/passwd
? sed –n ‘2p’ /etc/passwd
? sed –n ‘1,4p’ /etc/passwd
? sed –n ‘/root/p’ /etc/passwd
? sed –n ‘2,/root/p’ /etc/passwd 從2行開始
? sed -n ‘/^$/=’ file 顯示空行行號
sed –n –e ‘/^$/p’ –e ‘/^$/=’ file
? sed ‘/root/a\superman’ /etc/passwd 行后
? sed ‘/root/i\superman’ /etc/passwd 行前
? sed ‘/root/c\superman’ /etc/passwd 代替行
? sed ‘/^$/d’ file (刪除空行)
? sed ‘1,10d’ file (1-10行刪掉)
? nl /etc/passwd | sed ‘2,5d’
? nl /etc/passwd | sed ‘2a tea’
? sed ‘s/test/mytest/g’ example
? sed –n ‘s/root/&superman/p’ /etc/passwd 單詞后
sed –n ‘s/root/superman&/p’ /etc/passwd 單詞前
? sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets
? sed –i.bak ‘s/dog/cat/g’ pets
高級編輯命令;
?P:打印模式空間開端至\n內容,并追加到默認輸出之前
?h: 把模式空間中的內容覆蓋至保持空間中
?H:把模式空間中的內容追加至保持空間中
?g: 從保持空間取出數據覆蓋至模式空間
?G:從保持空間取出內容追加至模式空間
?x: 把模式空間中的內容與保持空間中的內容進行互換
?n: 讀取匹配到的行的下一行覆蓋至模式空間
?N:讀取匹配到的行的下一行追加至模式空間
?d: 刪除模式空間中的行
?D:如果模式空間包含換行符,則刪除直到第一個換行符的模式空間中的文本,
并不會讀取新的輸入行,而使用合成的模式空間重新啟動循環。如果模式空間
不包含換行符,則會像發出d命令那樣啟動正常的新循環
sed示例
? sed -n ‘n;p’ FILE
列如: [root@localhost ~]# seq 1 10
[root@localhost ~]# seq 1 10 |sed -n ‘n;p’ (雙數)
[root@localhost ~]# seq 1 10 |sed -n ‘2~2p’
? sed ‘1!G;h;$!d’ FILE 倒敘顯示
列如: [root@localhost ~]# seq 1 10 |sed ‘1!G;h;$!d’
[root@localhost ~]# seq 1 10 |tac
? sed ‘N;D‘ FILE 顯示倒敘一行
列如:[root@localhost ~]# seq 1 10 |sed ‘N;D’
? sed ‘$!N;$!D’ FILE 顯示倒敘2行
列如:[root@localhost ~]# seq 1 10 |sed ‘$!N;$!D’
sed ‘$!d’ FILE
? sed ‘G’ FILE
? sed ‘g’ FILE
? sed ‘/^$/d;G’ FILE
sed ‘n;d’ FILE
列如:[root@localhost ~]# seq 1 10 |sed ‘n;d’ (單數)
包管理器
靜態編譯:.a
動態編譯:.so
靜態鏈接
把程序對應的依賴庫復制一份到包
libxxx.a
嵌入程序包
升級難,需重新編譯
占用較多空間,遷移容易
動態鏈接
只把依賴加做一個動態鏈接
libxxx.so
連接指向
占用較少空間,升級方便
二進制應用程序的組成部分:
二進制文件、庫文件、配置文件、幫助文件
包之間:可能存在依賴關系,甚至循環依賴
解決依賴包管理工具:
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具
zypper: suse上的rpm前端管理工具
dnf: Fedora 18+ rpm包管理器前端管理工具
查看二進制程序所依賴的庫文件
ldd /PATH/TO/BINARY_FILE
管理及查看本機裝載的庫文件
ldconfig 加載庫文件
/sbin/ldconfig -p: 顯示本機已經緩存的所有可用庫文件名及文件路徑
映射關系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache
rpm包管理
CentOS系統上使用rpm命令管理程序包:
rpm {-i|–install} [install-options] PACKAGE_FILE…
-v: verbose
-vv:
-h: 以#顯示程序包管理執行進度
rpm包安裝
[install-options]
–test: 測試安裝,但不真正執行安裝,即dry run模式
–nodeps:忽略依賴關系
–replacepkgs | replacefiles
–nosignature: 不檢查來源合法性
–nodigest:不檢查包完整性
–noscripts:不執行程序包腳本
rpm包升級
升級:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE…
rpm {-F|–freshen} [install-options] PACKAGE_FILE…
upgrade:安裝有舊版程序包,則“升級”
如果不存在舊版程序包,則“安裝”
freshen:安裝有舊版程序包,則“升級”
如果不存在舊版程序包,則不執行升級操作
rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …
–oldpackage:降級
–force: 強制安裝
升級注意項
注意:
(1) 不要對內核做升級操作;Linux支持多內核版本并存,因此,對直接安裝新版
本內核
(2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配
置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名
(FILENAME.rpmnew)后保留
包查詢
rpm {-q|–query} [select-options] [query-options]
[select-options]
-a: 所有包
-f: 查看指定的文件由哪個程序包安裝生成
-p rpmfile:針對尚未安裝的程序包文件做查詢操作
–whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供
–whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴
包查詢
[query-options]
–changelog:查詢rpm包的changelog
-c: 查詢程序的配置文件
-d: 查詢程序的文檔
-i: information
-l: 查看指定的程序包安裝后生成的所有文件
–scripts:程序包自帶的腳本
–provides: 列出指定程序包所提供的CAPABILITY
-R: 查詢指定的程序包所依賴的CAPABILITY
包查詢
常用查詢用法:
-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, …
-qa
yum命令
yum命令的用法:
yum [options] [command] [package …]
顯示倉庫列表:
yum repolist [all|enabled|disabled]
顯示程序包:
yum list
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1] […]
安裝程序包:
yum install package1 [package2] […]
yum reinstall package1 [package2] […] (重新安裝)
yum命令
升級程序包:
yum update [package1] [package2] […]
yum downgrade package1 [package2] […] (降級)
檢查可用升級:
yum check-update
卸載程序包:
yum remove | erase package1 [package2] […]
yum命令
查看程序包information:
yum info […]
查看指定的特性(可以是某文件)是由哪個程序包所提供:
yum provides | whatprovides feature1 [feature2] […]
清理本地緩存:
清除/var/cache/yum/$basearch/$releasever緩存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins |
all ]
構建緩存:
yum makecache
yum命令
搜索:yum search string1 [string2] […]
以指定的關鍵字搜索程序包名及summary信息
查看指定包所依賴的capabilities:
yum deplist package1 [package2] […]
yum的命令行選項:
–nogpgcheck:禁止進行gpg check
-y: 自動回答為“yes”
-q:靜默模式
– -disablerepo=repoidglob:臨時禁用此處指定的repo
–enablerepo=repoidglob:臨時啟用此處指定的repo
–noplugins:禁用所有插件
GPT分區結構
EFI部分又可以分為4個區域: EFI信息區(GPT頭)、分區表、 GPT分區、備份區域
列出可用的磁盤設備
圖形化磁盤管理功能工具:點擊“應用程序” ->“系統工具” ->“磁盤”或執行命令gnome-disks
管理分區
列出塊設備
? lsblk
創建分區使用:
? fdisk 創建MBR分區
? gdisk 創建GPT分區
? parted 高級分區操作
partprobe-重新設置內存中的內核分區表版本
分區工具fdisk和gdisk
gdisk /dev/sdb 類fdisk 的GPT分區工具
fdisk -l [-u] [device…] 查看分區
fdisk /dev/sdb 管理分區
子命令:
p 分區列表
t 更改分區類型
n 創建新分區
d 刪除分區
v 校驗分區
u 轉換單位
w 保存并退出
q 不保存并退出
同步分區表
查看內核是否已經識別新的分區:
cat /proc/partations
centos6通知內核重新讀取硬盤分區表
新增分區用
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
刪除分區用
partx -d –nr M-N /dev/DEVICE
CentOS 5, 7: 使用partprobe
partprobe [/dev/DEVICE]
創建文件系統
mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L ‘LABEL’: 設定卷標
創建ext文件系統
mke2fs: ext系列文件系統專用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L ‘LABEL’
-j: 相當于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 為數據空間中每多少個字節創建一個inode;此大小
不應該小于block的大小
-N #:指定分區中創建多少個inode
-I 一個inode記錄占用的磁盤空間大小, 128—4096
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
文件系統標簽
指向設備的另一種方法
與設備無關
blkid:塊設備屬性信息查看
blkid [OPTION]… [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
e2label:管理ext系列文件系統的LABEL
e2label DEVICE [LABEL]
findfs;查找分區
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
tune2fs
tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息; super block
-L ‘LABEL’:修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用, –O ^has_journal
-o: 調整文件系統的默認掛載選項, –o ^acl
-U UUID: 修改UUID號
udumpe2fs:
塊分組管理, 32768塊
-h:查看超級塊信息,不顯示分組信息
文件系統檢測和修復
常發生于死機或者非正常關機之后
掛載為文件系統標記為“no clean”
注意:一定不要在掛載狀態下修復
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自動修復錯誤
-r: 交互式修復錯誤
FS_TYPE一定要與分區上已經文件類型相同
e2fsck: ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
mount常用命令選項
?? -t vsftype:指定要掛載的設備上的文件系統類型
-r: readonly,只讀掛載
-w: read and write, 讀寫掛載
-n: 不更新/etc/mtab, mount不可見
-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L ‘LABEL’: 以卷標指定掛載設備
-U ‘UUID’: 以UUID指定要掛載的設備
-B, –bind: 綁定目錄到另一個目錄上
卸載命令
查看掛載情況
findmnt MOUNT_POINT|device
查看正在訪問指定文件系統的進程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程
fuser -km MOUNT_POINT
卸載
umount DEVICE
umount MOUNT_POINT
常見工具
文件系統空間占用等信息的查看工具:
df [OPTION]… [FILE]…
-H 以1000為單位
-T 文件系統類型
-h: human-readable
-i: inodes instead of blocks
-P: 以Posix兼容的格式輸出
查看某目錄總體空間占用狀態:
du [OPTION]… DIR
-h: human-readable
-s: summary –max-depth
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96858