第二周作業(yè)

1. 總結(jié)學(xué)過的文本處理工具,文件查找工具,文本處理三劍客, 文本格式化命令(printf)的相關(guān)命令及選項,示例。

一、文本處理工具

1.查看文本內(nèi)容 cat????????命令格式:cat [OPTION] [FILE]
常見的選項有:
????-E 顯示行結(jié)束符$
????-A 顯示所有控制符
? ? -n 對顯示出的每一行進行編號

示例:

2.逆向顯示文本 tac
示例:

3.同一行內(nèi)容逆向顯示(翻面) rev
示例:

4.分頁查看文本內(nèi)容 less????????命令格式:less [FILE]
less可以實現(xiàn)分頁查看文件,可以在查看文本時使用:
????/文本 搜索文本
????pgup 向上翻頁
????pgdn 向下翻頁
?????q 退出

5.查看文本頭部內(nèi)容 head????????命令格式:head [OPTION] [FILE]
常用選項:
????-n#? ????????指定獲取前#行
? ? -#? ? ? ? ? ? 同上
如果指定位負數(shù)則會獲取首行到倒數(shù)#行

示例:

6.查看文本尾部內(nèi)容 tail? ? ? ? 命令格式:tail [OPTION] [FILE]
常用選項:
? ? -n#? ? ? ? 指定獲取后#行
? ? -#? ? ? ? ? 同上
如果指定為+#則會從#獲取到最后一行

示例:

7.按列抽取文本顯示 cut? ? ? ? 命令格式:cut [OPTION...] [FILE]
常用選項:
? ? -d .? ? ? ? 指定分隔符,默認tab
? ? -f? ?#? ? ? 第幾個字段

示例:

8.合并多個文件 paste? ? ? ? ?命令格式:paste [option] [file..]
常用選項:
? ? -d .? ? ? ? 指定分隔符,默認tab
? ? -s? ? ? ? ? ?所有行合成一行顯示

示例:

9.文本排序 sort? ? ? ? ? ? 命令格式:sort [option] [file]
常用選項:
? ? -r 執(zhí)行反方向整理? ? ? ? ? ? ? ? ? ? ? ? ?
? ? -R 隨機排序
????-n 執(zhí)行按數(shù)字大小整理
? ? -h 人類可讀排序
? ? -u 合并重復(fù)項,即去重
? ? -t? c? ? 使用c作為字段界定字符

示例:

10.文本去重 uniq? ? ? ? 命令格式: uniq [option] [file]
常用選項:
? ? ?-c 顯示每行重復(fù)出現(xiàn)的次數(shù)
?????-d 僅顯示重復(fù)過的行
? ? ?-u 僅顯示不曾重復(fù)的行

示例:

? 11.文本數(shù)據(jù)統(tǒng)計 wc? ?
? 常用選項:? ?
?????-l? ? ? ? 計數(shù)行數(shù)
? ? ?-w? ? ? 計數(shù)單詞總數(shù)
?????-c? ? ? ?計數(shù)字節(jié)總數(shù)
?????-m? ? ? 計數(shù)字符總數(shù)

示例:

二、文件查找工具

1. locate:非實時查找

locate查詢系統(tǒng)上預(yù)建的文件索引數(shù)據(jù)庫/var/lib/mlicate/mlocate.db
索引的構(gòu)建是在系統(tǒng)較為空閑時進行(很消耗資源),執(zhí)行updatedb可以更新數(shù)據(jù)庫
特點:
????查找速度快
????模糊查找
????非實時查找
????搜索的是文件的全路徑,不僅僅是文件名
????可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄

命令格式:locate [option] [PATTERN]
常用選項:
-i? ? ? ? 不區(qū)分大小寫的搜索
-n N? ?只列舉前N個匹配項目
-r? ? ? ? 使用基本正則表達式

示例:

2. find:實時查找

find是實時查找工具,通過遍歷指定路徑完成文件查找
工作特點:
????查找速度略慢
????精確查找
????實時查找
????查找條件豐富
????可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄

命令格式:find [OPTION]... [查找路徑] [查找條件] [處理動作]
find命令查找條件豐富可以對指定目錄進行查找,根據(jù)文件名和inode,屬主、屬組,文件類型,文件大小,時間戳,權(quán)限來進行查找

3. 參數(shù)替換 xargs
由于很多命令不支持管道|來傳遞參數(shù),xargs用于產(chǎn)生某個命令的參數(shù),xargs可以讀入stdin的數(shù)據(jù),許多命令不能解釋過多參數(shù),命令執(zhí)行可能會失敗,xargs也可以解決
find經(jīng)常和xargs命令進行組合

示例:

三、文本處理三劍客

1. grep 文本過濾

grep 命令主要針對文本的(正則表達式)行基于模式進行過濾,文本搜索工具。

命令格式:?grep [OPTIONS] PATTREN [FILE]
常見選項:
-m # 匹配#次后停止
-v 顯示不被pattren匹配到的行,即取反
-i 忽略大小寫
-n 顯示匹配的行號
-c 統(tǒng)計匹配的行數(shù)
-o 僅顯示匹配到的字符串
-A # 某字符后#行
-B # 某字符前#行
-C # 某字符前后#行
-e 實現(xiàn)多個選項間的邏輯or關(guān)系
-f file 根據(jù)模式文件處理
-r 遞歸,但不處理軟鏈接
-R 遞歸,處理軟鏈接

示例:

2. sed 行編輯器
sed是行編輯器,sed是從文件或管道中讀取一行,處理一行,輸出一行;再讀取一行,再處理一行,再輸出一行,直到最后一行。

命令格式:sed [OPTION] 'script;script;...' [inputfile]
? ? ? ? ? ? ? ? ? sed? 選項? '地址命令;地址命令;...'? 文件
常見選項:
????-n 關(guān)閉自動打印
????-e 多點編輯
????-f 從指定文件中讀取編輯腳本
????-E,-r 使用擴展正則表達式
????-i.bak 備份文件并原處編輯
????-s 將多個文件視為獨立文件,而不是單個連續(xù)的長文件流

地址格式:
可以使用具體的行數(shù),也可以使用正則表達式

命令:
-p 打印當前模式空間內(nèi)容,追加到默認輸出之后
-d 刪除模式空間匹配的行,并立即啟用下一輪循環(huán)
a[#] text 在指定的行后面追加文本,支持實現(xiàn)多行追加
?i[#] text 在指定行前面插入文本
c[#] text 替換行文本內(nèi)容
= 為模式空間中的行打印行號
! 模式空間中匹配行取反處理

查找替代:
格式:s/pattern/string/修飾符? ? 也可以使用其他分隔符,如:s@@@ , s###
替換修飾符:
g 行內(nèi)全部替換
p 顯示替換成功的行
w /PATH/FILE 將替換成功的行保存至文件中
I,i 忽略大小寫

示例:

三、文本格式化命令 printf

printf 增強版echo,實現(xiàn)豐富的格式化輸出,常用于腳本編寫中,命令后續(xù)的文本內(nèi)容樣式會按照命令中的指定格式打印輸出

命令格式:printf? ''指定的格式"? "文本1"? "文本2" ......

常用格式替換符
%s? ? 字符串
%d,%i? ? 十進制整數(shù)
%f? ? 浮點格式
%c? ? ASCII字符
%o? ? 八進制值
%u? ? 不帶正負號的十進制值
%x? ? 十六進制值(a-f)
%X? ?十六進制值(A-F)
%%? ? 表示%本身

常用的轉(zhuǎn)義字符
\a? ? 警告字符
\b? ? 后退
\f? ? 換頁
\n? ? 換行
\r? ? 回車
\t? ? 水平制表符
\v? ? 垂直制表符
\? ? 表示\本身

示例:


2. 總結(jié)文本處理的grep命令相關(guān)的基本正則和擴展正則表達式。

正則表達式的元字符分類:字符匹配,次數(shù)匹配,位置錨定,分組

基本正則表達式:

字符匹配
. ????匹配任意單個字符(除了\n),可以是一個漢字或其他國家的文字
[] ????匹配指定范圍內(nèi)的任意單個字符,示例:[wang] [0-9] [a-z]
[^] ????匹配指定范圍外的任意單個字符。示例:[^wanng]
[:alnum:] ????字母和數(shù)字
[:alpha:] ????代表任何英文大小寫字符,即A-Z,a-z
[:lower:] ????小寫字母
[:upper:] ????大寫字母
[:punct:] ????標點符號
[:blank:] ????空白字符(空格和制表符)

次數(shù)匹配
*? ? ? ? ? ?匹配前面的字符任意次,包括0次,貪婪模式:盡可能長的匹配
.* ???? ????任意長度的任意字符
\????? ???? 匹配其前面的字符出現(xiàn)0次或1次,即:可有可無
\+ ???? ????匹配其前面的字符出現(xiàn)最少1次,即:肯定有且 >=1 次
\{n\} ????????匹配前面的字符n次
\{m.n\} ????匹配前面的字符至少m次,至多n次
\{,n\} ????????匹配前面的字符至多n次,即:<=n
\{n,\} ????????匹配前面的字符至少n次,即:>=n

位置錨定
^ ???? 行首錨定,用于模式的最左側(cè)
$ ???? 行尾錨定,用于模式的最右側(cè)
^PATTREN$ ????用于匹配模式整行
^$ ???? 空行
\< ???? 詞首錨定,用于單詞模式的左側(cè)
\> ???? 詞尾錨定,用于單詞模式的右側(cè)
\<PATTERN\> ????匹配整個單詞

分組
分組:() 將多個字符捆綁在一起,當作一個整體處理
后向引用:分組括號中的模式匹配到的內(nèi)容會被正則表達式引擎記錄于內(nèi)部的變量中,這些變量的命名方式為::\1,\2,\3,...

或者 \|
a\|b ???? a或b
C\|cat ???? C或cat
\(C\|c\)at???? Cat或cat

擴展正則表達式:
使用擴展正則表達式需要加選項 -E,-r

字符匹配
.? 匹配任意單個字符(除了\n),可以是一個漢字或其他國家的文字
[]? 匹配指定范圍內(nèi)的任意單個字符,示例:[wang]? ? [0-9]? [a-z]
[^] 匹配指定范圍外的任意單個字符。示例:[^wanng]
[:alnum:]? 字母和數(shù)字
[:alpha:]? 代表任何英文大小寫字符,即A-Z,a-z
[:lower:]? 小寫字母
[:upper:]? 大寫字母
[:punct:]? 標點符號

次數(shù)匹配
*? ? ? 匹配前面的字符任意次,包括0次,貪婪模式:盡可能長的匹配
.*? ? ? 任意長度的任意字符
?? ? ? 匹配其前面的字符出現(xiàn)0次或1次,即:可有可無
+? ? ? 匹配其前面的字符出現(xiàn)最少1次,即:肯定有且 >=1 次
{n}? ? 匹配前面的字符n次
{m.n}? 匹配前面的字符至少m次,至多n次
{,n}? ? 匹配前面的字符至多n次,即:<=n
{n,}? ? 匹配前面的字符至少n次,即:>=n

位置錨定
^? ? ? ? ? 行首錨定,用于模式的最左側(cè)
$? ? ? ? ? 行尾錨定,用于模式的最右側(cè)
^PATTREN$? 用于匹配模式整行
$? ? ? ? ? 空行
\<? ? ? ? ? 詞首錨定,用于單詞模式的左側(cè)
\>? ? ? ? ? 詞尾錨定,用于單詞模式的右側(cè)
\ 匹配整個單詞

分組其他
()? 分組
后向引用:\1, \2, \3, ...注意: \0 表示正則表達式匹配的所有字符

|? 或者
a|b? ? ? ? a或b
C|cat? ? ? C或cat
(C|c)at? ? Cat或cat


3. 總結(jié)變量命名規(guī)則,不同類型變量(環(huán)境變量,位置變量,只讀變量,局部變量,狀態(tài)變量)如何使用。

變量命名的規(guī)則:
1.區(qū)分大小寫
2.不能使用程序中方保留字和內(nèi)置變量。如:if,for等
3.不能使用數(shù)字,字母及下劃線,且不能以數(shù)字開頭,不支持短橫線 "-",和主機名相反
4.用英文單詞命名,并體現(xiàn)出實際作用,不使用簡寫
5.變量名大寫
6.局部變量小寫
7.函數(shù)名小寫

環(huán)境變量的使用:
1.環(huán)境變量可以使子進程(包括孫子進程)繼承父進程的變量,但是父進程不能使用子進程的變量
2.一旦子進程修改從父進程繼承的變量,會將新的值傳遞給孫子進程
變量聲明和賦值:
export name=VALUE
declare -x name=VALUE
或者分兩步實現(xiàn)
name=VALUE
export name
變量引用:
$name
${name}
刪除變量:
unset name

位置變量的使用
在bash shell中內(nèi)置的變量,在腳本代碼中調(diào)用通過命令行傳遞給腳本參數(shù)
$1,$2,... ????對應(yīng)第1個,第2個參數(shù)
$0? ? 命令本身,包括路徑
$*? ? 傳遞腳本的所有參數(shù),全部參數(shù)合為一個字符串
$@? ? 傳遞給腳本的所有參數(shù),每個參數(shù)為獨立字符串
$#? ? 傳遞給腳本的參數(shù)個數(shù)

只讀變量的使用
只能聲明定義,后續(xù)不能修改和刪除,即常量
聲明只讀變量:
readonly name
declate -r name

狀態(tài)變量
進程執(zhí)行后,將使用變量$?來保存狀態(tài)碼的相關(guān)數(shù)字,不同的值反應(yīng)成功和失敗,$?取值0~255
執(zhí)行$?返回的值為0代表上一個進程執(zhí)行成功,若返回的值是1~255則代表上一個執(zhí)行的進程失敗


4. 通過shell編程完成,30雞和兔的頭,80雞和兔的腳,分別有幾只雞,幾只兔?




5. 結(jié)合編程的for循環(huán),條件測試,條件組合,完成批量創(chuàng)建100個用戶, 1)for遍歷1..100? 2)先id判斷是否存在? ? ?3)用戶存在則說明存在,用戶不存在則添加用戶并說明已添加。



6. 磁盤存儲術(shù)語總結(jié): head, track, sector, sylinder.

head :磁頭
track:磁道
sector:扇區(qū)
sylinder:柱面


7. 總結(jié)MBR,GPT結(jié)構(gòu)。

MBR分區(qū)模式:fdisk管理MBR分區(qū),支持最多3個主分區(qū),至少1一個擴展分區(qū),擴展分區(qū)內(nèi)的邏輯分區(qū)數(shù)字是以5開始,適合于2T以內(nèi)的磁盤使用

GPT分區(qū)模式:gdisk管理GPT分區(qū),支持分128個主分區(qū),適用于存儲空間大的硬盤



8. 總結(jié)學(xué)過的分區(qū),文件系統(tǒng)管理,SWAP管理相關(guān)的命令及選項,示例

分區(qū)管理:
lsblk:查看本機的硬盤

fdisk [磁盤路徑]? ? ?進入MBR模式分區(qū)
? 選項:
? ? p? ? 打印現(xiàn)有分區(qū)
? ? n? ? 新建分區(qū)
? ? d? ? 刪除分區(qū)
? ? w? ? 存盤退出
? ? q? ? 不存盤退出

? partprobe:將硬盤的分區(qū)表與內(nèi)存同步

文件系統(tǒng)管理:
xfs:SGI,支持最大8EB的文件系統(tǒng),不支持縮減,只支持擴展
ext4:是ext文件系統(tǒng)的最新版,提供了很多新的特性,包括秒級時間戳、創(chuàng)建和使用巨型文件(16TB)、最大1EB的文件系統(tǒng),相對成熟的文件系統(tǒng)

最后編輯于
?著作權(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)容

  • 一、. 總結(jié)學(xué)過的文本處理工具,文件查找工具,文本處理三劍客, 文本格式化命令(printf)的相關(guān)命令及選項,示...
    周泰民ztm閱讀 138評論 0 0
  • 1. 總結(jié)學(xué)過的文本處理工具,文件查找工具,文本處理三劍客, 文本格式化命令(printf)的相關(guān)命令及選項,示例...
    大老虎的小綿羊閱讀 89評論 0 0
  • 1. 總結(jié)linux安全模型 認證:驗證用戶身份 授權(quán):不同用戶設(shè)置不同權(quán)限 審計 2. 總結(jié)學(xué)過的權(quán)限,屬性及A...
    渾樹閱讀 216評論 0 0
  • 1. 總結(jié)學(xué)過的文本處理工具,文件查找工具,文本處理三劍客, 文本格式化命令(printf)的相關(guān)命令及選項,示例...
    松_cc86閱讀 75評論 0 0
  • 1. 總結(jié)學(xué)過的文本處理工具,文件查找工具,文本處理三劍客, 文本格式化命令(printf)的相關(guān)命令及選項,示例...
    14fed2575abf閱讀 99評論 0 0

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