shell學習筆記之九(重定向)
來源:程序員人生 發(fā)布時間:2015-07-31 08:23:46 閱讀次數(shù):3096次
重定向
概念:
將默許的輸入輸出改成其他的輸入輸出
文件標識符
linux使用0⑼指明特定進程相干的數(shù)據(jù)流,系統(tǒng)在啟動1個進程的時候會為該進程打開3個文件:標準輸入(stdin),標準輸出(stdout),標準毛病輸出,分別使用文件標識符0,1,2來標識,如果要為進程打開其他的輸入輸出,則需要從整數(shù)3開始標識。默許情況下,標準輸入為鍵盤,標準輸出和毛病輸出為顯示器
I/O重定向
1、標準輸出覆蓋重定向(>)
ls -l > test.txt
注意:如果指定的文件不存在,則命令會先創(chuàng)建文件
上述命令相當于:ls -l 1>test.txt
ls -l /usr/noExist 2> ls_noExist_err.txt
毛病重定向輸出
如果命令的輸出既有標準輸出,又有毛病標準輸出,則可以分別指定不同標識符的內容
COMMAND 1> stdout.txt 2> stderr.txt
2、標準輸出追加重定向(>>)
和>的用法1致,只是這個是追加,不會清空原文件
3、標識輸出重定向(>&)
標準輸出重定向的作用是將1個標識的輸出重定向到另外一個標識的輸入。
例:將標準輸出和標準毛病輸出同時重定向到1個文件
COMMAND > test.txt 2>&1
如果不關心毛病輸出
COMMAND > test.txt 2> /dev/null #/dev/null是1個特殊裝備,像1個黑洞
4、標準輸入重定向 <
5、管道(|)
6、exec
exec是shell的內建命令,
7、Here Document
用于在命令中按行輸入文本,格式為<<delimiter,其中delimiter是1個用于標注的分割符,該分割符后所有的輸入都被當作是輸入的文本,直到出現(xiàn)下1個分隔符。
這個的功能的出現(xiàn)主要是由于Ctrl+D輸入完成的信號在交互環(huán)境下是可以的,但是在腳本中卻沒法使用。
例:
#cat here.txt
line1
line2
line3
line4
#現(xiàn)在想要在here.txt的第3行插入1個新行
#!/bin/bash
ed here.txt <<END
3
d
i
this is new line3
.
wq
END
#cat here.txt
line1
line2
this is new line3
line4
也就是說,我們把要在終端輸入的命令全部寫道1個文件里,這個文件相當于摹擬我們的鍵盤輸入
#對1串輸入字符排序
#!/bin/bash
sort <<END
sdt
t
dsaj
dsg
fdg
we
gh
avf
END
這樣就能夠在任什么時候候任什么時候間對這些字符串進行排序了。
空格:
1、test 測試比較時,操作符兩側要有空格
2、if [] ,if 和 [] 之間要有空格
3、[ expression ] expression兩側要有空格
4、算數(shù)運算和賦值沒有空格
5、while與以后的expression有空格 如:while expression
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈