1. 總結學過的文本處理工具,文件查找工具,文本處理三劍客, 文本格式化命令(printf)的相關命令及選項,示例。
grep: 用于在文本中搜索指定模式的工具。它支持使用正則表達式進行高級搜索。
?例子:grep '/sbin' test.txt
?sed: 流編輯器,用于在文本流中進行文本替換、刪除、插入等操作。它可以在不修改原始文件的情況下對文本進行修改。
?例子:sed 's/\/sbin/print/' test.txt?
?awk: 用于對文本進行處理和報告的強大工具。它支持自定義的文本處理規(guī)則和操作。
?例子:awk -F ":" '{print $1}' /etc/passwd?
?cut: 用于從文本中剪切出指定字段或列的工具。?
?例子:ip addr|grep 'link'|head -1|cut -d':' -f2?
?sort: 對文本進行排序的工具,可以按行、按字段等進行排序。?
?例子:echo "5 3 1 4 2" | tr ' ' '\n' | sort -n?
?uniq: 用于從排序后的文本中刪除重復的行。?
?例子:echo "5 3 1 4 2 4 2" | tr ' ' '\n' | sort -n|uniq?
?tr: 用于轉換或刪除文本中的字符。
?例子:echo "5 3 1 4 2 4 2" | tr ' ' '\n'?
?head 和 tail: 分別用于顯示文本的開頭幾行和末尾幾行。
例子:echo "5 3 1 4 2 4 2" | tr ' ' '\n'| head -1?
?cat: 將文件連接到標準輸出或文件的工具,通常用于查看文件內容。
?例子:cat test.txt wc: 統(tǒng)計文本文件的行數、字數和字符數。?
?例子:echo "5 3 1 4 2 4 2" | tr ' ' '\n'|wc -l?
?find: find 命令用于在文件系統(tǒng)中查找文件和目錄。雖然它主要用于查找文件,但也可以結合其他命令和管道來搜索文件內容。?
?例子:find / -name xx.sh?
?which:查找文件,多用于查找命令來源?
?例子:which ls?
?whereis:查找工具速度最快的,只能查找二進制程序、文檔和源碼?
?例子:whereis touch?
?printf:一個用于格式化輸出文本的命令。它可以按照指定的格式將文本輸出到標準輸出或指定的文件中?
?例子:printf "Name: %s\tAge: %d\n" "John" 25
2. 總結文本處理的grep命令相關的基本正則和擴展正則表達式。
? 基本正則表達式 :
?.: 匹配任意單個字符,除了換行符。?
[]: 匹配括號內的任意一個字符。?
?^: 匹配行首的位置。?
?$: 匹配行尾的位置。?
?*: 匹配其前面的字符出現 0 次或多次。?
?\: 轉義字符,用于匹配特殊字符。
擴展正則表達式 :
+: 匹配其前面的字符出現 1 次或多次。
?: 匹配其前面的字符出現 0 次或 1 次。
|: 或操作,匹配兩個或多個模式中的一個。
(): 分組,用于限制或擴展模式的范圍。
{}: 限定符,用于指定重復次數。
[]: 字符類,用于匹配括號內的任意一個字符。
3. 總結變量命名規(guī)則,不同類型變量(環(huán)境變量,位置變量,只讀變量,局部變量,狀態(tài)變量)如何使用。
變量命令規(guī)則:
命名要求
區(qū)分大小寫不能使程序中的保留字和內置變量:如:if,for
只能使用數字、字母及下劃線,且不能以數字開頭,不支持短橫線
變量名大寫
局部變量小寫
函數名小寫
大駝峰StudentFirstName,由多個單詞組成,且每個單詞的首字母是大寫,其它小寫
小駝峰studentFirstName,由多個單詞組成,第一個單詞的首字母小寫,后續(xù)每個單詞的首字母是大寫,其它小寫
下劃線:student_name
環(huán)境變量
可以使子進程(包括孫子進程)繼承父進程的變量,但是無法讓父進程使用子進程的變量一旦子進程修改從父進程繼承的變量,將會新的值傳遞給孫子進程.
export name=VALUE
位置變量
位置變量:在bash shell中內置的變量,在腳本代碼中調用通過命令行傳遞給腳本的參數
$1,$2, ….. 對應第1個、第2個等參數
$0命令本身,包括路徑
$*傳遞給腳本的所有參數,全部參數合為一個字符串
$@傳遞給腳本的所有參數,每個參數為獨立字符串
$#傳遞給腳本的參數的個數
只讀變量
只讀變量:只能聲明定義,但后續(xù)不能修改和刪除,即常量
聲明只讀變量:
readonly name
查看只讀變量:
readonly -p
局部變量
定義在函數內部的變量
狀態(tài)變量
進程執(zhí)行后,將使用變量$?保存狀態(tài)碼的相關數字,不同的值反應成功或失敗,$?取值范例0-255
$?的值為0 #代表成功
$?的值是1到255 #代表失敗
在腳本中使用以下命令自定義退出狀態(tài)碼
exit [n]
?4. 通過shell編程完成,30雞和兔的頭,80雞和兔的腳,分別有幾只雞,幾只兔??
for i in {1..30}
do
if (( i2+(30-i)4 == 80 )); then
echo "雞的數量為: $i"
echo "兔子的數量為:" $((30-i))
fi
done
5. 結合編程的for循環(huán),條件測試,條件組合,完成批量創(chuàng)建100個用戶, 1)for遍歷1..1002)先id判斷是否存在3)用戶存在則說明存在,用戶不存在則添加用戶并說明已添加。
1)for遍歷1..100'
2)先id判斷是否存在
3)用戶存在則說明存在,用戶不存在則添加用戶并說明已添加。 ?
#!/bin/bash
name=user
for i in {1..100};do id $name$i &> /dev/null
if [ $? -eq 0 ];then
?echo "$name$i已存在"
else
?useradd -d /home/$name$i -s /bin/bash $name$i && echo "$name$i已創(chuàng)建"
fi
done
6. 磁盤存儲術語總結: head, track, sector, sylinder.?
head-磁頭 track-磁道 sector-扇區(qū) sylinder-柱面
7. 總結MBR,GPT結構。
MBR: 使用32位表示扇區(qū)數,分區(qū)不超過2T
0磁道0扇區(qū):512bytes
446bytes: boot loader 啟動相關
64bytes:分區(qū)表,其中每16bytes標識一個分區(qū)
2bytes: 55AA,標識位
MBR分區(qū)中一塊硬盤最多有4個主分區(qū),也可以3主分區(qū)+1擴展(N個邏輯分區(qū))
MBR分區(qū):主和擴展分區(qū)對應的1 -- 4,/dev/sda3,邏輯分區(qū)從5開始,/dev/sda5
GPT: 支持128個分區(qū),使用64位,支持8Z(512Byte/block )- 64Z (4096Byte/block)
使用128位UUID(Universally Unique Identifier)表示磁盤和分區(qū)GPT分區(qū)表自動備份在頭和尾兩份,并有CRC檸驗位
?8. 總結學過的分區(qū),文件系統(tǒng)管理,SWAP管理相關的命令及選項,示例fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff
fidk
fdisk -l [-u] [device ... ] 查看分區(qū)
fdisk [device ... ] 管理MBR分區(qū)
gdisk [device ... ] 類fdisk 的GPT分區(qū)工具
子命令:
p 分區(qū)列表
t 更改分區(qū)類型
n 創(chuàng)建新分區(qū)
d 刪除分區(qū)
V 校驗分區(qū)
u 轉換單位
w 保存并退出
q 不保存并退出
查看內核是否已經識別新的分區(qū)
cat /proc/partitions
CentOS 7,8同步分區(qū)表:
partprobe
parted
格式:
parted [選項] ... [設備 [命令 [參數] ... ] ... ]
范例:
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200(默認M)
parted /dev/sdb rm 1
parted -1 列出所有硬盤分區(qū)信息
mkfs
是分區(qū)創(chuàng)建文件格式 mkfs .ext4 /dev/sda mkfs .xfs /dev/sda
xfs_info 查看xfs文件信息