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

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


咨詢(xún)
建站咨詢(xún)
