46 关于Linux的I/O重定向
生活随笔
收集整理的這篇文章主要介紹了
46 关于Linux的I/O重定向
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
I/O重定向是一個過程,這個過程捕捉一個文件、或命令、或程序、或腳本、甚至代碼塊(code block)的輸出,然后把捕捉到的輸出,作為輸入發送給另外一個文件、或命令、或程序、或腳本。
1、I/O重定向符合包含了基本I/O重定向符號和高級I/O重定向符號兩大類。
基本I/O重定向符號(須要注意的是能夠使用FD文件描寫敘述符作為文件名): cmd1 | cmd2:管道符,將cmd1的標準輸出作為cmd2的標準輸入
> filename:將標準輸出寫到文件filename之中
< filename:將文件filename的內容讀入到標準輸入之中
>> filename:將標準輸出寫到文件filename之中,若filename文件已存在,則將標準輸出追加到filename已有內容之后
>| filename:即使noclobber選項已開啟,仍然強制將標準輸出寫到文件filename之中,即將filename文件覆蓋掉
n>| filename :即使noclobber選項已開啟,仍然強制將FD為n的輸出寫到文件filename之中,即將filename文件覆蓋掉
n> filename:將FD為n的輸出寫到文件filename之中
n< filename :將文件filename的內容讀入到FD n之中
n>> filename:將FD為n的輸出寫到文件filename之中,若filename文件已存在,則將FD為n的輸出追加到filename已有內容之后
<<delimiter :此處文檔(Here-document)
高級I/O重定向符號
n>&m:將FD為m的輸出復制到FD為n的文件
n<&m:將FD為m的輸入復制到FD為n的文件
n>&-:關閉FD為n的輸出
n<&-:關閉FD為n的輸入
&>file:將標準輸出和標準錯誤輸出重定向到文件
--------I/O重定向和管道的差別
首先須要注意的是管道|事實上也是I/O重定向的一個操作部分
1、管道左邊是一個能夠送到標準輸出(stdout)的命令,右邊是一個從標準輸入接受(stdin)的命令;假設I/O重定向符左邊是有輸出的命令,右邊僅僅能是文件,假設I/O重定向符左邊是能接受輸入的命令,右邊僅僅能是文件。
2、在管道運行的時候啟動了兩個進程,該進程分別運行左右兩邊的命令;而I/O重定向符值則在同一個進程中完畢
---------在Linux中有兩個重要的特殊文件:
/dev/null:這是一個空設備文件,被送到當中的所有的數據都會被丟棄,能夠將標準輸出和錯誤輸出所有重定向到該文件里,此時既能夠將錯誤信息所有丟棄。
標準寫法是>/dev/null 2>&1
當中>/dev/null表示丟棄文件; 2>&1當中2和1分別表示標準輸出stdout和標準出錯stderr,>&表示等同于,也就是將標準出錯輸出2重定向于標注輸出1,因為標準輸出已經被重定位到了/dev/null,所以標準出錯的輸出也被扔掉了。
該寫法也能夠是1>/dev/null 2>/dev/null,差別在這樣的情況下標準輸出和標準出錯都被送到/dev/null,這個文件被打開了兩遍;而>/dev/null 2 >& 1則是將標準輸出送到/dev/null,而標準出錯則是從管道送到/dev/null,/dev/null僅僅被打開了一次,當中/dev/null能夠換成其它不論什么文件。
/dev/tty:當該文件被打開的時候shell會將其自己主動重定向到一個終端(包含顯示控制臺、遠程登陸偽中斷或者串口)。
1、I/O重定向符合包含了基本I/O重定向符號和高級I/O重定向符號兩大類。
基本I/O重定向符號(須要注意的是能夠使用FD文件描寫敘述符作為文件名): cmd1 | cmd2:管道符,將cmd1的標準輸出作為cmd2的標準輸入
> filename:將標準輸出寫到文件filename之中
< filename:將文件filename的內容讀入到標準輸入之中
>> filename:將標準輸出寫到文件filename之中,若filename文件已存在,則將標準輸出追加到filename已有內容之后
>| filename:即使noclobber選項已開啟,仍然強制將標準輸出寫到文件filename之中,即將filename文件覆蓋掉
n>| filename :即使noclobber選項已開啟,仍然強制將FD為n的輸出寫到文件filename之中,即將filename文件覆蓋掉
n> filename:將FD為n的輸出寫到文件filename之中
n< filename :將文件filename的內容讀入到FD n之中
n>> filename:將FD為n的輸出寫到文件filename之中,若filename文件已存在,則將FD為n的輸出追加到filename已有內容之后
<<delimiter :此處文檔(Here-document)
高級I/O重定向符號
n>&m:將FD為m的輸出復制到FD為n的文件
n<&m:將FD為m的輸入復制到FD為n的文件
n>&-:關閉FD為n的輸出
n<&-:關閉FD為n的輸入
&>file:將標準輸出和標準錯誤輸出重定向到文件
--------I/O重定向和管道的差別
首先須要注意的是管道|事實上也是I/O重定向的一個操作部分
1、管道左邊是一個能夠送到標準輸出(stdout)的命令,右邊是一個從標準輸入接受(stdin)的命令;假設I/O重定向符左邊是有輸出的命令,右邊僅僅能是文件,假設I/O重定向符左邊是能接受輸入的命令,右邊僅僅能是文件。
2、在管道運行的時候啟動了兩個進程,該進程分別運行左右兩邊的命令;而I/O重定向符值則在同一個進程中完畢
---------在Linux中有兩個重要的特殊文件:
/dev/null:這是一個空設備文件,被送到當中的所有的數據都會被丟棄,能夠將標準輸出和錯誤輸出所有重定向到該文件里,此時既能夠將錯誤信息所有丟棄。
標準寫法是>/dev/null 2>&1
當中>/dev/null表示丟棄文件; 2>&1當中2和1分別表示標準輸出stdout和標準出錯stderr,>&表示等同于,也就是將標準出錯輸出2重定向于標注輸出1,因為標準輸出已經被重定位到了/dev/null,所以標準出錯的輸出也被扔掉了。
該寫法也能夠是1>/dev/null 2>/dev/null,差別在這樣的情況下標準輸出和標準出錯都被送到/dev/null,這個文件被打開了兩遍;而>/dev/null 2 >& 1則是將標準輸出送到/dev/null,而標準出錯則是從管道送到/dev/null,/dev/null僅僅被打開了一次,當中/dev/null能夠換成其它不論什么文件。
/dev/tty:當該文件被打開的時候shell會將其自己主動重定向到一個終端(包含顯示控制臺、遠程登陸偽中斷或者串口)。
轉載于:https://www.cnblogs.com/bhlsheji/p/4033494.html
總結
以上是生活随笔為你收集整理的46 关于Linux的I/O重定向的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wsdl透明解析
- 下一篇: android Listview scr