新聞中心
Linux io重定向是將原本要輸出到屏幕中的數據信息,重新定向到某個指定的文件中,或者定向到黑洞中(/dev/null)中,下面為大家詳細講解一下Linux io重定向。

成都創(chuàng)新互聯(lián)公司擁有一支富有激情的企業(yè)網站制作團隊,在互聯(lián)網網站建設行業(yè)深耕10多年,專業(yè)且經驗豐富。10多年網站優(yōu)化營銷經驗,我們已為上1000家中小企業(yè)提供了成都做網站、成都網站建設解決方案,按需設計,設計滿意,售后服務無憂。所有客戶皆提供一年免費網站維護!
標準輸入與輸出
當進程操作一個文件時
首先進程是無法直接訪問硬件,需要借助內核來訪問文件
而內核kernel需要利用文件描述符(file descriptor)來訪問文件
總結:進程–通過–>文件描述符(非負整數)–訪問–>文件名稱,進程使用文件描述來管理打開的文件對應關系
第一步:運行tail -f /etc/passwd
第二步:通過文件描述符3–>/etc/passwd–>inode–>block
第三步:正確輸出–>默認情況下通過文件描述1–>當前終端 1 >(改變輸出對的位置,文件或黑洞)
第四步:錯誤輸出–>默認情況下通過文件描述2–>當前終端 2>
通常程序訪問一個文件至少會打開三個標準文件,分別是標準輸入、標準輸出、錯誤輸出
進程將從標準輸入中得到數據,將正常輸出打印至屏幕終端,將錯誤的輸出信息也打印至屏幕終端
標準輸入(STDIN) 文件描述符0 作用:默認是鍵盤,也可以是文件或者其他命令的輸出
標準輸出(STDOUT) 文件描述符 1 作用:默認輸出到屏幕
錯誤輸出(STDERR) 文件描述符2 作用:默認輸出到屏幕
文件名稱(filename) 文件描述符3+
輸出重定向
輸出重定向,改變輸出內容的位置。輸出重定向有以下幾種方式,如下
標準覆蓋輸出重定向 操作符:1> 用途:將程序輸出的正確結果輸出到指定的文件中,會覆蓋文件原有的內容
標準追加輸出重定向 操作符: 1>> 用途:將程序輸出的正確結果以追加的方式輸出到指定文件,不會覆蓋原有文件
錯誤覆蓋輸出重定向 操作符:2> 用途:將程序的錯誤結果輸出到執(zhí)行的文件中,會覆蓋文件原有的內容
錯誤追加輸出重定向 操作符::2>> 用途:將程序輸出的錯誤結果以追加的方式輸出到指定文件,不會覆蓋原有文件
案例1-標準輸出重定向
標準輸出重定向示例
1.如果文件不存在則創(chuàng)建 [root@node: ~]#> edu.txt
2.如果文件存在則清空內容 [root@node: ~]#ifconfig ens32 > edu.txt
案例2-標準追加輸出重定向
1.如果文件不存在則創(chuàng)建 2.如果文件存在則在文件尾部添加內容
[root@node: ~]#echo “Hello Students” >> if
案例3-錯誤輸出重定向 標準錯誤輸出重定向
1.正確輸出及錯誤輸出至相同文件
[mg@node ~]$ find /etc -name “*.conf” 1>ok 2>ok
2.正確輸出及錯誤輸出至不同的文件
[mg@node ~]$ find /etc -name “*.conf” 1>ok1 2>err
混合輸出重定向
1.將正確輸出錯誤輸出混合至同一文件 [mg@node ~]$ find /etc -name “*.conf” &>ab
2.將兩個文件內容組合為一個文件 [mg@node ~]$ cat ab > c
正確和錯誤都輸出到相同位置 [root@node: ~]#ls /root/error >ab 2>&1
將內容輸出至黑洞
將內容輸出至黑洞設備/dev/null
[root@node: ~]#ls /root /error >ab 2>/dev/null
[root@node: ~]#ls /root /error > ab &>/dev/null
輸入重定向案例
輸入重定向:指的是“重新制定設備”來“代替鍵盤”作為新的輸入設備
輸入重定向示例 1.通過輸入重定向讀取文件內容 [root@node: ~]#cat
2。通過輸入重定向讀入多行內容 [root@node: ~]#cat
3.通過輸入重定向香數據導入至數據庫中
[root@node: ~]# mysql -uroot -poldxu.com
腳本輸入重定向
使用輸入重定向打印安裝服務的菜單導航欄
輸入重定向場景 1.恢復數據時、 2.腳本打印菜單時會用到 3.cat寫入文件時,vim
輸出重定向 正確輸出: 1>:覆蓋(先清空,后寫入) 1>>:直接寫入文件額的尾部(末尾)
錯誤輸出: 2>:覆蓋(先清空,后寫入) 2>>:直接西而入文件的尾部(末尾)
混合輸出 &>/dev/null &>>/dev/null 1>/devnull 2>&1
進程管道技術
什么是管道 管道操作符號“|”,主要用來連接左右兩個命令,將左側命令的【標準輸出】,交給右側命令的【標準輸入】
注意:無法傳遞標準錯誤輸出至后者命令
管道命令符能讓用戶進一步掌握命令之間的搭配使用方法,進一步提高命令輸出值得處理效率
管道流程示意
格式:cmd1 | cmd2 | […|cmdn]
管道使用案例
將/etc/passwd中的用戶按UD大小排序 [root@node: ~]#sort -t”:” -k3 -n /etc/passwd | head
tee與xargs
在管道中使用tee 相當于在中間開了個口,截取第一個命令的內容并保存到文件,但不應影響下個命令的輸出
#選項:-a追加 [root@node: ~]#ip addr | grep “inet” |tee ip1.txt | awk -F ‘/’ ‘print $1}’ awk ‘{prnt $2’
cat ip.txt [root@node: ~]#cat ip.txt inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host
管道中使用xargs xargs參數傳遞,主要讓一些不支持管道命令可以使用管道技術
[root@node: ~]#which cat | xargs ls -l -rwxr-xr-x. 1 root root 54080 Nov 17 2020 /usr/bin/cat
ls | xargs rm -fv 刪除當前目錄下的所有文件
本文標題:詳解Linuxio重定向
文章鏈接:http://m.fisionsoft.com.cn/article/dhicgos.html


咨詢
建站咨詢
