05Linux重定向與管道

Unix philosophy:do one thing and do it well

Unix 3準(zhǔn)則:

(1)一次只做一件事,并做到最好

(2)能夠與其他程序協(xié)同工作

(3)能夠處理文本流


如何與其他程序協(xié)同:重定向redirection和pipes管道

輸入輸出文本流I/O Stream

0、1、2


0、1、2

Linux中使用>和>>符來重定向標(biāo)準(zhǔn)輸入


1.1輸出重定向:將某個(gè)命令默認(rèn)指向stdout或stderr的輸出文本轉(zhuǎn)而指向一個(gè)文件,即使命令輸出到某個(gè)指定文件中,而不是輸出到終端屏幕或者終端窗口中了


如何進(jìn)行輸出重定向:

ls -l /tmp/example/ 1>./stdout.txt【1:文件描述符,表示被重定向的是標(biāo)準(zhǔn)輸出】如果stdout.txt文件原本不存在,文件將被創(chuàng)建;文件原本存在,內(nèi)容將被覆蓋

ls -l /tmp/example/ 1>> ./stdout.txt【雙右尖括號(hào),命令的輸出將添加到文件原來內(nèi)容后面

ls -l /tmp/example/ 2> ./stderr.txt【2:重定向錯(cuò)誤輸出】

ls -l /tmp/example/file01 /tmp/example/file04

1>stdout.txt 2>stderr.txt 【同時(shí)重定向標(biāo)準(zhǔn)輸出與錯(cuò)誤輸出】

ls -l /tmp/example/file01 /tmp/example/file04

&>std.txt 【同時(shí)重定向標(biāo)準(zhǔn)輸出與錯(cuò)誤輸出并輸出到同一個(gè)文件當(dāng)中】

例一:利用文件輸出重定向結(jié)合echo命令創(chuàng)建文本文件

?-e輸出轉(zhuǎn)義字符

例二:用文件輸出重定向來忽略命令錯(cuò)誤輸出,即執(zhí)行某個(gè)命令但不希望在屏幕上顯示命令的錯(cuò)誤輸出,錯(cuò)誤輸出被重定向到了一個(gè)名為/dev/null文件中

ls -l /tmp/example/file01 /tmp/example/file04

/dev/null文件是一個(gè)非常特殊的塊設(shè)備文件,可視為系統(tǒng)的黑洞


1.2輸入重定向:讓命令從指定的文件中獲取輸入,而非從stdin中,這常常指從鍵盤獲取輸入

<和<<符來重定向標(biāo)準(zhǔn)輸入

例一:

tr命令往往用于從標(biāo)準(zhǔn)輸入中替換特定字符,并將結(jié)果寫到標(biāo)準(zhǔn)輸出

tr [準(zhǔn)備要替換的字符][要替換成的字符]

例二:

sort展示了輸入重定向的一種特殊形式:here document

sort -k[關(guān)鍵字字段序號(hào)][要排序的文本文件]

界定符EOF不一定是EOF但結(jié)尾的界定符要頂格寫,前后無空格s


2管道:一種特殊的輸入輸出重定向

將一個(gè)命令的標(biāo)準(zhǔn)輸出重定向?yàn)榱硪粋€(gè)命令的標(biāo)準(zhǔn)輸入。

管道操作符|

構(gòu)造命令管道:使用管道操作符將命令連起來


命令1的輸出作為命令2的輸入,命令2的輸出作為命令3的輸入,命令n的輸出作為最終輸出方直接顯示在屏幕上


例子1對(duì)命令的輸出進(jìn)行分頁查看

ls -l /etc |less

例子2

grep正則表達(dá)式【文本查找命令后可跟2個(gè)參數(shù)】

grep[關(guān)鍵字][目標(biāo)文件]

ls -l /etc |grep ‘ssh’ 【查找ls命令輸出中帶有ssh字樣的行】

例子3文本提取和統(tǒng)計(jì)

cut文本切割命令,cut用于切割文本文件或者標(biāo)準(zhǔn)輸出中的指定列,并輸出

cut -c【用字符列切割文本,-c選項(xiàng)后面緊跟的數(shù)字表示切割的字符列序號(hào),可以切割多列,數(shù)字之間用逗號(hào)隔開】

cat ~/install.log| cut -c 1,2【切割輸出當(dāng)前用戶家目錄下的install.log的前兩列字符】

cat /etc/passwd |cut -f1 -d”:”【cut 連用-d -f 兩個(gè)選項(xiàng),按指定分隔符分隔開的文本來切割文本,其中-d選項(xiàng)后面緊跟的符號(hào)表示分隔符,-f選項(xiàng)后面緊跟的數(shù)字表示切割的字段序列號(hào)】【這里切割輸入/etc/passwd文件的第一個(gè)字段,字段用“:”隔開】

wc 文本統(tǒng)計(jì)命令,wc可以統(tǒng)計(jì)文本文件或者標(biāo)準(zhǔn)輸出中的文本行數(shù)單詞數(shù)和字節(jié)數(shù)

wc -l /etc/passwd【僅表示統(tǒng)計(jì)文本行數(shù)】

ls -l ~|cut -c1|grep “d”|wc -l【統(tǒng)計(jì)當(dāng)前用戶家目錄下所有目錄文件的數(shù)目】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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