您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Linux中io重定向的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Linux io重定向是將原本要輸出到屏幕中的數(shù)據(jù)信息,重新定向到某個指定的文件中,或者定向到黑洞中(/dev/null)中。
當(dāng)進(jìn)程操作一個文件時
首先進(jìn)程是無法直接訪問硬件,需要借助內(nèi)核來訪問文件
而內(nèi)核kernel需要利用文件描述符(file descriptor)來訪問文件
總結(jié):進(jìn)程–通過–>文件描述符(非負(fù)整數(shù))–訪問–>文件名稱,進(jìn)程使用文件描述來管理打開的文件對應(yīng)關(guān)系
第一步:運行tail -f /etc/passwd
第二步:通過文件描述符3–>/etc/passwd–>inode–>block
第三步:正確輸出–>默認(rèn)情況下通過文件描述1–>當(dāng)前終端 1 >(改變輸出對的位置,文件或黑洞)
第四步:錯誤輸出–>默認(rèn)情況下通過文件描述2–>當(dāng)前終端 2>
通常程序訪問一個文件至少會打開三個標(biāo)準(zhǔn)文件,分別是標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、錯誤輸出
進(jìn)程將從標(biāo)準(zhǔn)輸入中得到數(shù)據(jù),將正常輸出打印至屏幕終端,將錯誤的輸出信息也打印至屏幕終端
標(biāo)準(zhǔn)輸入(STDIN) 文件描述符0 作用:默認(rèn)是鍵盤,也可以是文件或者其他命令的輸出
標(biāo)準(zhǔn)輸出(STDOUT) 文件描述符 1 作用:默認(rèn)輸出到屏幕
錯誤輸出(STDERR) 文件描述符2 作用:默認(rèn)輸出到屏幕
文件名稱(filename) 文件描述符3+
輸出重定向,改變輸出內(nèi)容的位置。輸出重定向有以下幾種方式,如下
標(biāo)準(zhǔn)覆蓋輸出重定向 操作符:1> 用途:將程序輸出的正確結(jié)果輸出到指定的文件中,會覆蓋文件原有的內(nèi)容
標(biāo)準(zhǔn)追加輸出重定向 操作符: 1>> 用途:將程序輸出的正確結(jié)果以追加的方式輸出到指定文件,不會覆蓋原有文件
錯誤覆蓋輸出重定向 操作符:2> 用途:將程序的錯誤結(jié)果輸出到執(zhí)行的文件中,會覆蓋文件原有的內(nèi)容
錯誤追加輸出重定向 操作符::2>> 用途:將程序輸出的錯誤結(jié)果以追加的方式輸出到指定文件,不會覆蓋原有文件
標(biāo)準(zhǔn)輸出重定向示例
1.如果文件不存在則創(chuàng)建 [root@node: ~]#> edu.txt
2.如果文件存在則清空內(nèi)容 [root@node: ~]#ifconfig ens32 > edu.txt
1.如果文件不存在則創(chuàng)建 2.如果文件存在則在文件尾部添加內(nèi)容
[root@node: ~]#echo “Hello Students” >> if
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.將兩個文件內(nèi)容組合為一個文件 [mg@node ~]$ cat ab > c
正確和錯誤都輸出到相同位置 [root@node: ~]#ls /root/error >ab 2>&1
將內(nèi)容輸出至黑洞設(shè)備/dev/null
[root@node: ~]#ls /root /error >ab 2>/dev/null
[root@node: ~]#ls /root /error > ab &>/dev/null
輸入重定向:指的是“重新制定設(shè)備”來“代替鍵盤”作為新的輸入設(shè)備
2。通過輸入重定向讀入多行內(nèi)容 [root@node: ~]#cat
3.通過輸入重定向香數(shù)據(jù)導(dǎo)入至數(shù)據(jù)庫中
[root@node: ~]# mysql -uroot -poldxu.com
使用輸入重定向打印安裝服務(wù)的菜單導(dǎo)航欄
輸出重定向 正確輸出: 1>:覆蓋(先清空,后寫入) 1>>:直接寫入文件額的尾部(末尾)
錯誤輸出: 2>:覆蓋(先清空,后寫入) 2>>:直接西而入文件的尾部(末尾)
混合輸出 &>/dev/null &>>/dev/null 1>/devnull 2>&1
注意:無法傳遞標(biāo)準(zhǔn)錯誤輸出至后者命令
管道命令符能讓用戶進(jìn)一步掌握命令之間的搭配使用方法,進(jìn)一步提高命令輸出值得處理效率
將/etc/passwd中的用戶按UD大小排序 [root@node: ~]#sort -t”:” -k3 -n /etc/passwd | head
在管道中使用tee 相當(dāng)于在中間開了個口,截取第一個命令的內(nèi)容并保存到文件,但不應(yī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
[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)前目錄下的所有文件
感謝各位的閱讀!關(guān)于“Linux中io重定向的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。