Linux程序設(shè)計(jì)讀書筆記冗锁,供新手閱讀這本書的重點(diǎn)嗤栓,同時(shí)也是加強(qiáng)自己的記憶,掃掃忙點(diǎn)茉帅。
首先我們來(lái)看最簡(jiǎn)單的重定向輸出:
ls -l > output.txt
現(xiàn)在我們只需知道,標(biāo)準(zhǔn)的文件描述符的三個(gè)擂错,0代表標(biāo)準(zhǔn)輸入樱蛤,1代表標(biāo)準(zhǔn)輸出桃犬, 2代表標(biāo)準(zhǔn)錯(cuò)誤輸出攒暇。
這個(gè)例子是通過(guò)>操作進(jìn)行重定向輸出子房,如果源文件存在則直接覆蓋,如果不想覆蓋证杭,可以使用兩種方法:
- set -o noclobber 設(shè)置noclobber選項(xiàng) set +o noclobber 取消選項(xiàng)
但我們?cè)O(shè)置之后我們?cè)偃ジ采w會(huì)有提示:
當(dāng)我們?nèi)∠撨x項(xiàng)之后解愤,就可以直接覆蓋了。
- ">>" 使用追加操作符可以將內(nèi)容直接追加到一個(gè)文件中
當(dāng)我們想把命令的標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出分別重定向到不同文件中時(shí):
kill -HUP 1234 > killout.txt 2>killerr.txt
這樣就分別重定向奸笤,那么如果想同時(shí)重定向到一個(gè)文件中呢哼鬓?
kill -l 1234 > killouterr.txt 2>&1
使用 >& 操作可以使標(biāo)準(zhǔn)輸入輸出同時(shí)定向到同一個(gè)文件中。
這里要注意操作符出現(xiàn)的順序健盒,這條命令的意思是:把標(biāo)準(zhǔn)輸出重定向到文件killouterr.txt中称簿,然后將標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到和1(標(biāo)準(zhǔn)輸出)一樣的地方這里不要弄錯(cuò)順序,不然的道德不是理想的結(jié)果憨降。
上面是重定向的簡(jiǎn)單解釋,后續(xù)還會(huì)有更多的內(nèi)容频轿,接著我們來(lái)看管道:
不同管道中有著不同的數(shù)據(jù)流烁焙,我們可以使用管道操作符 | 來(lái)鏈接進(jìn)程,在Linux中膳殷,通過(guò)管道連接的進(jìn)程可以同時(shí)運(yùn)行,并且隨著數(shù)據(jù)流在它們之間的傳遞可以自動(dòng)的協(xié)調(diào)赚窃,一個(gè)簡(jiǎn)單的例子,
使用sort命令對(duì)ps命令的輸出進(jìn)行排序是掰。不使用管道我們要走兩步:
ps > psout.txt
sort psout.txt > pssort.out
如果使用管道辱匿,那么就會(huì)變的簡(jiǎn)單精巧:
ps | sort > pssort.out
允許鏈接的數(shù)目是沒(méi)有限制的我們?cè)賮?lái)一個(gè)稍微復(fù)雜點(diǎn)的命令
ps -xo comm | sort | uniq | grep -v sh | more
這個(gè)命令的意思是:顯示錯(cuò)有進(jìn)程,進(jìn)行排序絮短,去除重復(fù)昨忆,抓取不是sh的進(jìn)程,最后分屏顯示邑贴。