Linux bash中I/O重定向及管道
????我們知道,在Linux中一切皆文件。這就意味著,任何一個設(shè)備在系統(tǒng)中都有一個文件與之對應(yīng)。因此我們就可以通過文件來訪問設(shè)備。對于用戶來講,訪問文件就是通過文件名來進行的,用戶看到就是一個文件名,但對于內(nèi)核來說,看到的只能是數(shù)字,這個數(shù)字就叫做文件描述符,內(nèi)核就是通過利用文件描述符fd(file descriptor)來訪問文件。打開現(xiàn)存文件或者新建文件時,內(nèi)核會返回一個文件描述符。讀寫文件也需要使用文件描述符來指定待讀寫的文件。
????在Linux系統(tǒng)中,默認有三種標準輸入輸出情況
????標準輸入:鍵盤,0
????標準輸出:顯示器,1
????標準錯誤輸出:顯示器,2
????
????但是如果我們不想實現(xiàn)標準的輸入輸出怎么辦,因此我們可以利用I/O重定向這種機制來實現(xiàn)改變標準位置。下面來說下I/O重定向的具體用法:
????
IO重定向:
輸出重定向:>
特性:覆蓋輸出
輸出重定向:>>
特性:追加輸出
# set -C
禁止覆蓋輸出重定向至已存在的文件;
此時可使用強制輸出覆蓋:>
# set +C
關(guān)閉上述特性
錯誤輸出流重定向:2>,2>>
合并正常輸出流和錯誤輸出流:
(1) &>,&>>
(2) COMMAND > /path/to/somefile 2>&1
COMMAND >> /path/to/somefile 2>&1
特殊設(shè)備:/dev/null
輸入重定向:<
tr命令:
tr [OPTION]... SET1 [SET2]
把輸入的數(shù)據(jù)當中的字符,凡是在SET1定義范圍內(nèi)出現(xiàn)的,統(tǒng)統(tǒng)對位轉(zhuǎn)換成SET2出現(xiàn)的字符;
用法1:
tr SET1 SET2 < /PATH/FROM/SOMELIFE
用法2:
tr SET1 -d < /PATH/FROM/SOMELIFE
注意:不修改原文件
Here Document: <<
cat << EOF
cat >/PATH/TO/SOMELIFE << EOF
管道:連接程序,實現(xiàn)將前一個命令的輸出直接定向后一個程序當做輸入數(shù)據(jù)流;
COMMAND1 | COMMOND2 | COMMAND3 |...
????????????????????????????STDERR默認不能通過管道轉(zhuǎn)發(fā),可利用2>&1 或|& 實現(xiàn)
最后一個命令會在當前shell進程的子shell進程中執(zhí)行用來
tee命令:
COMMAND | tee /PATH/TO/SOMELIFE
練習題:
1、將/etc/issue文件中的內(nèi)容轉(zhuǎn)換為大寫后保存至/tmp/issue.out文件中
2、將當前系統(tǒng)登錄用戶的信息轉(zhuǎn)換為大寫后保存至/tmp/who.out文件中
3、一個linux用戶給root發(fā)郵件,要求郵件標題為”help”,郵件正文如下:
Hello, I am 用戶名,the system version is here,pleasehelp me to check it ,thanks!
操作系統(tǒng)版本信息
4、將/root/下文件列表,顯示成一行,并文件名之間用空格隔開
5、file1文件的內(nèi)容為:”1 2 3 4 5 6 7 8 9 10” 計算出所有數(shù)字的總和
6、處理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的數(shù)字和空格
7、將PATH變量每個目錄顯示在獨立的一行
8、刪除指定文件的空行
9、將文件中每個單詞(字母)顯示在獨立的一行,并無空行
轉(zhuǎn)載于:https://blog.51cto.com/11808474/1832037
總結(jié)
以上是生活随笔為你收集整理的Linux bash中I/O重定向及管道的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NFS 网络文件系统
- 下一篇: Linux基础知识(一)