溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux中io重定向的示例分析

發(fā)布時間:2022-02-19 11:52:01 來源:億速云 閱讀:132 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)Linux中io重定向的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Linux io重定向是將原本要輸出到屏幕中的數(shù)據(jù)信息,重新定向到某個指定的文件中,或者定向到黑洞中(/dev/null)中。

Linux中io重定向的示例分析

標(biāo)準(zhǔn)輸入與輸出

當(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é)果以追加的方式輸出到指定文件,不會覆蓋原有文件

案例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-錯誤輸出重定向 標(biāo)準(zhǔn)錯誤輸出重定向

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)容輸出至黑洞

將內(nèi)容輸出至黑洞設(shè)備/dev/null

[root@node: ~]#ls /root /error >ab 2>/dev/null

[root@node: ~]#ls /root /error > ab &>/dev/null

輸入重定向案例

輸入重定向:指的是“重新制定設(shè)備”來“代替鍵盤”作為新的輸入設(shè)備

輸入重定向示例 1.通過輸入重定向讀取文件內(nèi)容 [root@node: ~]#cat

2。通過輸入重定向讀入多行內(nèi)容 [root@node: ~]#cat

3.通過輸入重定向香數(shù)據(jù)導(dǎo)入至數(shù)據(jù)庫中

[root@node: ~]# mysql -uroot -poldxu.com

腳本輸入重定向

使用輸入重定向打印安裝服務(wù)的菜單導(dǎo)航欄

輸入重定向場景 1.恢復(fù)數(shù)據(jù)時、 2.腳本打印菜單時會用到 3.cat寫入文件時,vim

輸出重定向 正確輸出: 1>:覆蓋(先清空,后寫入) 1>>:直接寫入文件額的尾部(末尾)

錯誤輸出: 2>:覆蓋(先清空,后寫入) 2>>:直接西而入文件的尾部(末尾)

混合輸出 &>/dev/null &>>/dev/null 1>/devnull 2>&1

進(jìn)程管道技術(shù)

什么是管道 管道操作符號“|”,主要用來連接左右兩個命令,將左側(cè)命令的【標(biāo)準(zhǔn)輸出】,交給右側(cè)命令的【標(biāo)準(zhǔn)輸入】

注意:無法傳遞標(biāo)準(zhǔn)錯誤輸出至后者命令

管道命令符能讓用戶進(jìn)一步掌握命令之間的搭配使用方法,進(jìn)一步提高命令輸出值得處理效率

管道流程示意

格式:cmd1 | cmd2 | […|cmdn]

管道使用案例

將/etc/passwd中的用戶按UD大小排序 [root@node: ~]#sort -t”:” -k3 -n /etc/passwd | head

tee與xargs

在管道中使用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

管道中使用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)前目錄下的所有文件


感謝各位的閱讀!關(guān)于“Linux中io重定向的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(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)容。

AI