磁碟分割槽 & Linux 三劍客之 awk
阿新 • • 發佈:2021-12-22
今日內容
- 磁碟分割槽
- Linux 三劍客之 awk
內容詳細
一、磁碟分割槽
磁碟分割槽 --> 掛載
步驟
1、關機
2、新增硬碟
3、建立分割槽
fdisk /dev/sdb
or
gdisk /dev/sdb
4、格式化檔案系統
mkfs.xfs /dev/sdb1
5、掛載
mount /dev/sdb1 /mnt
1、檢視磁碟
磁碟目錄
/dev --> cdrom、sdb、sdc
[root@localhost ~]# ls /dev
檢視本機的磁碟
lsblk [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 512M 0 part /boot └─sda2 8:2 0 99.5G 0 part └─centos-root 253:0 0 99.5G 0 lvm / sdb 8:16 0 200G 0 disk ├─sdb1 8:17 0 50G 0 part └─sdb2 8:18 0 100G 0 part sdc 8:32 0 3.9T 0 disk sr0 11:0 1 4.4G 0 rom
檢視本機的分割槽
df -h
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
2、磁碟分割槽命令
fdisk : 分割槽2TB以下的磁碟,最多可以分4個分割槽
fdisk [磁碟路徑(操作物件)] 1、fdisk [磁碟目錄] 2、n : 新建一個分割槽 3、p : 列印分割槽表 4、w : 寫入磁碟並退出 q : 退出 d : 刪除一個分割槽 例子: 1、輸入分割槽命令 [root@localhost ~]# fdisk /dev/sdb 2、選擇新建分割槽 Command (m for help): n Partition type: p primary (2 primary, 0 extended, 2 free) < -- 這裡可以看到還剩餘多少個分割槽可建立 e extended 3、預設列印 Select (default p): Using default response p Partition number (3,4, default 3): 4、第一個不輸入,第二個輸入分割槽的大小( + 分割槽大小) First sector (314574848-419430399, default 314574848): Using default value 314574848 Last sector, +sectors or +size{K,M,G} (314574848-419430399, default 419430399): +10G Partition 3 of type Linux and of size 10 GiB is set 4、寫入並退出 Command (m for help): w The partition table has been altered!
輸入 m 可以檢視 fdisk 中所有的命令
gdisk :分割槽2TB以上的磁碟,最多可以分128個分割槽
與上述 fdisk 的磁碟分割槽操作步驟 幾乎 一致
3、格式化檔案系統
格式命令
mkfs.xfs [磁碟路徑] [root@localhost ~]# mkfs.xfs /dev/sdb3 meta-data=/dev/sdb3 isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2621440, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
4、掛載
命令
mount [磁碟路徑] [掛載母鹿]
[root@localhost ~]# mount /dev/sdb3 /mnt
5、檢查是否掛載
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 100G 2.1G 98G 3% /
/dev/sda1 509M 132M 378M 26% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb3 10G 33M 10G 1% /mnt < -- 掛載成功!
三、Linux 三劍客之 awk
awk 的作用主要式格式化文字
1、語法格式
命令書寫格式
awk [引數] [處理規則] [操作物件]
引數:
-F : 指定文字內容的分隔符(輸出之前指定)
# 指定 passwd 檔案中內容的分隔符為 :
列印最後一列
awk -F: '{print $NF}' /etc/passwd
[root@localhost ~]# awk -F: '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
2、awk 的生命週期
注意 : awk 對文字的處理是一行一行進行處理的,直至處理完成,grep 和 sed 也是如此
1、接收一行文字內容作為輸入
2、對剛進來的文字內容進行分解
3、根據處理規則處理文字
4、把處理結果賦值給 $0,直至處理完成
5、把處理完之後的所有資料交給END{}來再次處理
3、awk 中的預定義變數
提前知道 : {} 是迴圈的意思
$0 : 代表當前行
[root@localhost ~]# awk -F: '{print $0, "---"}' /etc/passwd
root:x:0:0:root:/root:/bin/bash --- < -- '當前行'後面都列印了 '---'
bin:x:1:1:bin:/bin:/sbin/nologin ---
daemon:x:2:2:daemon:/sbin:/sbin/nologin ---
adm:x:3:4:adm:/var/adm:/sbin/nologin ---
$n : 代表第 n 列
[root@localhost ~]# awk -F: '{print $1}' /etc/passwd
root < -- 列印了第一列的內容
bin
daemon
adm
lp
sync
NF : 記錄當前行的欄位數(列數)
[root@localhost ~]# awk -F: '{print NF}' /etc/passwd
7 < -- 列印每一行的列數(欄位數)
7
7
7
NR :記錄當前的行數(行號)
[root@localhost ~]# awk -F: '{print NR}' /etc/passwd
1
2
3
4
5
6 < -- 記錄每一行的行號
FS : 指定文字內容的分隔符,預設是空格(輸出之前,將文字原有的內容分隔)
[root@localhost ~]# awk -F: 'BEGIN{FS="x"}{print $NF}' /etc/passwd
:0:0:root:/root:/bin/bash
:1:1:bin:/bin:/sbin/nologin
:2:2:daemon:/sbin:/sbin/nologin
:3:4:adm:/var/adm:/sbin/nologin
# FS 的優先順序比 -F 的大,優先執行 FS
OFS : 指定列印(輸出)文字內容的分隔符,預設是空格
列印第一列和第二列,列印時用 ~~ 分隔開
[root@localhost ~]# awk -F: 'BEGIN{OFS=" ~~ "}{print $NF,$1}' /etc/passwd
/bin/bash ~~ root
/sbin/nologin ~~ bin
/sbin/nologin ~~ daemon
/sbin/nologin ~~ adm
/sbin/nologin ~~ lp
/bin/sync ~~ sync
4、awk 處理規則的執行流程
BEGIN{ }
/ /
{ }
END{ }
5、awk 中的函式
列印處理後的文字內容
printf
格式化列印
%s
字串佔位
%d
數字佔位
佔位符中的 左對齊,加數字組合使用,表示佔據多少位元組
佔位符中的 右對齊,加數字組合使用,表示佔據多少位元組
例子
# 用 : 號 分隔 passwd 檔案中的內容,
# 格式化列印分隔後的第一列和最後一列,
# 每列佔用15位元組,
# 輸出的內容用 | 管道符分隔
awk -F: '{printf"|%-15s|%-15s|\n",$1,$NF}' /etc/passwd
[root@localhost ~]# awk -F: '{printf"|%-15s|%-15s|\n",$1,$NF}' /etc/passwd
|root |/bin/bash |
|bin |/sbin/nologin |
|daemon |/sbin/nologin |
|adm |/sbin/nologin |
|lp |/sbin/nologin |
6、awk 中的定位
1、正則表示式
# 正則使用 / / 符號來匹配
例子:
1、列印 passwd 檔案中含有 root 的行
awk -F: '/root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
2、列印以 root 開頭的行
awk -F: '/^root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
3、列印第一列不包含 root 的行
awk -F: '$1 !~ /root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '$1 !~ /root/{print $0}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
2、比較表示式
比較符號:
>
<
=
>=
<=
~ : 包含,一般與正則表示式一起使用
!~ : 不包含
例子:
列印所屬主id 與 所屬組id 相加小於1000的行
[root@localhost ~]# awk -F: '($3 + $4 < 1000){print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
3、邏輯表示式
符號:
&& : 邏輯與
|| : 邏輯或
! : 邏輯非
例子:
[root@localhost ~]# awk -F: '$3 + $4 > 10 && $3 * $4 < 1000{print $0}' /etc/passwd
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
列印所屬主id 與 所屬組id 相加大於1000的行
[root@localhost ~]# awk -F: '!($3 + $4 < 1000){print $0}' /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
4、算術表示式
符號:
+
-
*
/ : 除以
== : 等於
% : 取餘數
例子:
1、列印行數是奇數的行
awk -F: 'NR % 2 == 1{print $0}' /etc/passwd
[root@localhost ~]# cat -n /etc/passwd | awk -F: 'NR % 2 == 1{print $0}'
1 root:x:0:0:root:/root:/bin/bash
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin < -- 行號都是奇數
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
2、列印行數是偶數數的行
cat -n /etc/passwd | awk -F: 'NR % 2 == 0{print $0}'
[root@localhost ~]# cat -n /etc/passwd | awk -F: 'NR % 2 == 0{print $0}'
2 bin:x:1:1:bin:/bin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
8 halt:x:7:0:halt:/sbin:/sbin/halt
5、條件表示式
符號 : (與比較表示式相似)
==
>
<
>=
<=
例子:
1、列印第 5 行與第 7 行
cat -n /etc/passwd | awk -F: 'NR == 5 || NR == 7{print $0}'
[root@localhost ~]# cat -n /etc/passwd | awk -F: 'NR == 5 || NR == 7{print $0}'
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
6、範圍表示式
類似於 sed 的定位
例子:
1、列印以 root 開頭的行到以 adm 開頭的行
awk -F: '/^root/,/^adm/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/^root/,/^adm/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
8、流程控制
注意: 流程控制只存在迴圈之中
if
1、單分支 : {if(判斷條件){輸出結果}}
2、二分支 : {if(判斷條件){輸出結果}else{}}
例子:
如果所屬主id 與屬組id 相加大於1000,輸出 big, 否則輸出 small
awk -F: '{if($3 + $4 > 1000){print "big"}else{print "small"}}' /etc/passwd
[root@localhost ~]# awk -F: '{if($3 + $4 > 1000){print "big"}else{print "small"}}' /etc/passwd
small
small
big
small
small
3、多分支 : {if(){}else if{}else{}}
for
{for(i="初始值";判斷條件;遊標){}}
例子:
每行列印前 2 次
awk -F: '{for(i=0;i<5;i++){print $0}}' /etc/passwd
[root@localhost ~]# awk -F: '{for(i=0;i<2;i++){print $0}}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
while
{while(判斷條件){}}
例子:
每行列印兩遍
[root@localhost ~]# cat -n /etc/passwd | awk -F: '{i=1;while(i<3){print $0, i++}}'
1 root:x:0:0:root:/root:/bin/bash 1
1 root:x:0:0:root:/root:/bin/bash 2
2 bin:x:1:1:bin:/bin:/sbin/nologin 1
2 bin:x:1:1:bin:/bin:/sbin/nologin 2
列印前 5 行
[root@localhost ~]# cat -n /etc/passwd | awk -F: 'NR < 6{print $0}'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
每隔 5 行 列印一次橫線
每隔 5 行 列印一次橫線
[root@localhost ~]# awk -F: '{if(NR % 5 == 0){print "-----------"}print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
-----------
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
-----------