目錄(持續(xù)更新)
基礎(chǔ)-第0章-安裝
基礎(chǔ)-第1章-基本操作
基礎(chǔ)-第2章-磁盤及文件系統(tǒng)管理
基礎(chǔ)-第3章-獲得幫助
基礎(chǔ)-第4章-用戶及權(quán)限基礎(chǔ)
基礎(chǔ)-第5章-網(wǎng)絡(luò)基本配置
基礎(chǔ)-第6章-管道奏纪,重定向及文本處理
基礎(chǔ)-第7章-系統(tǒng)啟動(dòng)詳解
進(jìn)階-第1章-日志服務(wù)
進(jìn)階-第2章-DNS域名服務(wù)器
進(jìn)階-第3章-FTP文件共享服務(wù)
進(jìn)階-第4章-NFS文件共享服務(wù)
進(jìn)階-第5章-SMB文件共享服務(wù)
進(jìn)階-第6章-WEB服務(wù)Apache篇
進(jìn)階-第7章-電子郵件服務(wù)
進(jìn)階-第8章-Linux服務(wù)基礎(chǔ)及管理
[高級(jí)-第1章-LVM邏輯卷]
[高級(jí)-第2章-高級(jí)權(quán)限ACL]
[高級(jí)-第3章-RAID提升速度及冗余]
[高級(jí)-第4章-高級(jí)網(wǎng)絡(luò)-網(wǎng)卡綁定腌乡,子端口]
[高級(jí)-第5章-SELinux安全系統(tǒng)基礎(chǔ)]
[高級(jí)-第6章-IPTable防火墻基礎(chǔ)]
[高級(jí)-第7章-Linux-自動(dòng)化部署]
第6章 管道,重定向及文本處理
第一節(jié) linux多命令協(xié)作:管道和重定向
-
不要重復(fù)發(fā)明輪子
開(kāi)源文化的核心理念之一就是不要重復(fù)發(fā)明輪子航缀,很多開(kāi)源軟件都是先有軟件代碼功能的重新組合 就好象通過(guò)零件裝配機(jī)器一樣商架,源代碼的開(kāi)放和共享讓這成為了可能,同時(shí)也大大的提高了效率和生產(chǎn)力
-
管道和重定向
在linux中大多命令都很簡(jiǎn)單芥玉,我們可以通過(guò)將不同功能的命令組合一起來(lái)達(dá)到某個(gè)復(fù)雜的功能的目的 linux中幾乎所有命令的返回?cái)?shù)據(jù)都是純文本的(因?yàn)槊疃际沁\(yùn)行在CLI的) 而純文本形式數(shù)據(jù)大多是輸入格式蛇摸,就讓很多命令協(xié)作成為可能 linux的命令行為我們提供了管道和重定向機(jī)制,多命令協(xié)作就是通過(guò)管道和重定向完成的
-
命令行shell的數(shù)據(jù)流有以下定義
STDIN 標(biāo)準(zhǔn)輸入 0 鍵盤 STDOUT 標(biāo)準(zhǔn)輸出 1 終端 STDERR 標(biāo)準(zhǔn)錯(cuò)誤 2 終端
命令通過(guò)STDIN接受參數(shù)數(shù)據(jù)
通過(guò)STDOUT輸出結(jié)果
通過(guò)STDERR輸出錯(cuò)誤
通過(guò)管道和重定向我們可以控制CLI數(shù)據(jù)流
-
重定向
> 將STDOUT重定向到文件(覆蓋) echo"linuxcast" > outfile 將命令的輸出保存到文件中 ls > outfile 無(wú)法保存錯(cuò)誤報(bào)錯(cuò)信息 >> 將STDOUT重定向到文件(追加) echo"linuxcast" >> outfile 將命令的輸出保存到文件中 ls >> outfile 無(wú)法保存錯(cuò)誤報(bào)錯(cuò)信息 2> 將STDERR重定向到文件 ls nothere 2> errorout 只將命令的報(bào)錯(cuò)信息保存到文件 正常信息不會(huì)被保存 2>&1 將STDERR和STDOUT結(jié)合 ls nothere 2> alloutput 將命令輸出和報(bào)錯(cuò)都保存到文件 < 重定向STDIN grep linuxcast < /etc/passwd 把文件信息傳遞給命令
-
管道
| 將一個(gè)命令的STDOUT ls -l |greo linuxcast 作為另一個(gè)命令的STDIN find / -user linuxcast | grep video 注:重定向到 /dev/null 的信息都會(huì)丟棄處理 管道用來(lái)組合命令 重定向用來(lái)保存信息
第二節(jié) linux命令行文本處理
-
基于關(guān)鍵字信息搜索
命令grep用以基于關(guān)鍵字搜索文本 grep 'linuxcast' /etc/passwd find / -user linuxcast |grep Video -i 搜索忽略大小寫(xiě) -n 顯示結(jié)果所在行數(shù) -v 輸出不帶關(guān)鍵字的行 -Ax 在輸出的時(shí)候包含結(jié)果所在行之后的指定行數(shù) x為行數(shù) -Bx 在輸出的時(shí)候包含結(jié)果所在行之前的指定行數(shù) x為行數(shù)
-
基于列處理文本
命令cut用以基于列處理文本內(nèi)容 cut -d: -f1 /etc/passwd 使用:作為分割符將passwd文件處理為列 然后顯示第一列 grep linuxcast /est/passwd |cut -d: -f3 -d 指定分割字符(默認(rèn)是TAB) -f 指定輸出的列號(hào) -c 基于字符進(jìn)行切割 cut -c2-6 /etc/passwd 只顯示第二到第六個(gè)字符
-
文本統(tǒng)計(jì)
命令wc用以統(tǒng)計(jì)文本信息 wc linuxcast -l 只統(tǒng)計(jì)行數(shù) -w 只統(tǒng)計(jì)單詞 -c 只統(tǒng)計(jì)字節(jié)數(shù) -m 只統(tǒng)計(jì)字符數(shù)
-
文本排序
命令sort用以對(duì)文本內(nèi)容進(jìn)行排序 不支持中文 sort linuxcast -r 進(jìn)行倒序排序 -n 基于數(shù)字進(jìn)行·排序 -f 忽略大小寫(xiě) -u 刪除重復(fù)行 -t c 使用c作為分隔符分割為列進(jìn)行排序 -k x 當(dāng)進(jìn)行基于指定字符分割為列的排序時(shí) 指定基于哪個(gè)列排序 x為數(shù)字
-
刪除重復(fù)行
命令sort -u 可以用以刪除重復(fù)行 命令uniq用以刪除重復(fù)的相鄰行 默認(rèn)只能刪除相鄰重復(fù)行
-
文本比較
命令diff用于比較兩個(gè)文件的區(qū)別 diff linuxcast linuxcast-new -i 忽略大小寫(xiě) -b 忽略空格數(shù)量的改變 -u 統(tǒng)一顯示比較信息(一般用以生成patch文件,補(bǔ)丁文件) diff -u linuxcast linuxcast-new > final.patch 將文件區(qū)別做成補(bǔ)丁文件
-
檢查拼寫(xiě)
命令aspell用來(lái)檢查英文拼寫(xiě) aspell check linuxcast aspell list <linuxcast
-
處理文本內(nèi)容
命令tr用于處理文本內(nèi)容 刪除關(guān)鍵字 tr -d'TMD' < linuxcast 轉(zhuǎn)換大小寫(xiě) tr 'a-z' 'A-Z' < linuxcast
-
搜索替換
命令sed用來(lái)搜索并且替換文本 sed 's/linux/unix/g' linuxcast 將linux字符替換為unix sed '1,50s/linux/unix/g' linuxcast sed -e 's/linux/unix/g' -e 's/nash/nash_su/g' linuxcast sed -f sededit linuxcast 單引號(hào)之間為正則表達(dá)式 將linux字符替換為unix /g為全局替換 s指定行數(shù)