国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux重定向(輸入輸出重定向)詳解

2024-08-27 23:57:05
字體:
來源:轉載
供稿:網友
我們知道,linux 中標準的輸入設備默認指的是鍵盤,標準的輸出設備默認指的是顯示器。而本節所要介紹的輸入、輸出重定向,完全可以從字面意思去理解,也就是:
  • 輸入重定向:指的是重新指定設備來代替鍵盤作為新的輸入設備;
  • 輸出重定向:指的是重新指定設備來代替顯示器作為新的輸出設備。

通常是用文件或命令的執行結果來代替鍵盤作為新的輸入設備,而新的輸出設備通常指的就是文件。

Linux輸入重定向

對于輸入重定向來說,其需要用到的符號以及作用如表 1 所示。

表 1 輸入重定向中用到的符號及作用
命令符號格式作用
命令 < 文件將指定文件作為命令的輸入設備
命令 << 分界符表示從標準輸入設備(鍵盤)中讀入,直到遇到分界符才停止(讀入的數據不包括分界符),這里的分界符其實就是自定義的字符串
命令 < 文件 1 > 文件 2將文件 1 作為命令的輸入設備,該命令的執行結果輸出到文件 2 中。

【例 1】
默認情況下,cat 命令會接受標準輸入設備(鍵盤)的輸入,并顯示到控制臺,但如果用文件代替鍵盤作為輸入設備,那么該命令會以指定的文件作為輸入設備,并將文件中的內容讀取并顯示到控制臺。

以 /etc/passwd 文件(存儲了系統中所有用戶的基本信息)為例,執行如下命令:

[root@localhost ~]# cat /etc/passwd
#這里省略輸出信息,讀者可自行查看
[root@localhost ~]# cat < /etc/passwd
#輸出結果同上面命令相同

注意,雖然執行結果相同,但第一行代表是以鍵盤作為輸入設備,而第二行代碼是以 /etc/passwd 文件作為輸入設備。

【例 2】

[root@localhost ~]# cat << 0
>c.biancheng.net
>Linux
>0
c.biancheng.net
Linux

可以看到,當指定了 0 作為分界符之后,只要不輸入 0,就可以一直輸入數據。

【例 3】
首先,新建文本文件 a.tx,然后執行如下命令:

[root@localhost ~]# cat a.txt
[root@localhost ~]# cat < /etc/passwd > a.txt
[root@localhost ~]# cat a.txt
#輸出了和 /etc/passwd 文件內容相同的數據

可以看到,通過重定向 /etc/passwd 作為輸入設備,并輸出重定向到 a.txt,最終實現了將 /etc/passwd 文件中內容復制到 a.txt 中。

Linux輸出重定向

相較于輸入重定向,我們使用輸出重定向的頻率更高。并且,和輸入重定向不同的是,輸出重定向還可以細分為標準輸出重定向和錯誤輸出重定向兩種技術。

例如,使用 ls 命令分別查看兩個文件的屬性信息,但其中一個文件是不存在的,如下所示:

[root@localhost ~]# touch demo1.txt
[root@localhost ~]# ls -l demo1.txt
-rw-rw-r--. 1 root root 0 Oct 12 15:02 demo1.txt
[root@localhost ~]# ls -l demo2.txt    <-- 不存在的文件
ls: cannot access demo2.txt: No such file or directory

上述命令中,demo1.txt 是存在的,因此正確輸出了該文件的一些屬性信息,這也是該命令執行的標準輸出信息;而 demo2.txt 是不存在的,因此執行 ls 命令之后顯示的報錯信息,是該命令的錯誤輸出信息。

再次強調,要想把原本輸出到屏幕上的數據轉而寫入到文件中,這兩種輸出信息就要區別對待。

在此基礎上,標準輸出重定向和錯誤輸出重定向又分別包含清空寫入和追加寫入兩種模式。因此,對于輸出重定向來說,其需要用到的符號以及作用如表 2 所示。

表 2 輸出重定向用到的符號及作用
命令符號格式作用
命令 > 文件將命令執行的標準輸出結果重定向輸出到指定的文件中,如果該文件已包含數據,會清空原有數據,再寫入新數據。
命令 2> 文件將命令執行的錯誤輸出結果重定向到指定的文件中,如果該文件中已包含數據,會清空原有數據,再寫入新數據。
命令 >> 文件將命令執行的標準輸出結果重定向輸出到指定的文件中,如果該文件已包含數據,新數據將寫入到原有內容的后面。
命令 2>> 文件將命令執行的錯誤輸出結果重定向到指定的文件中,如果該文件中已包含數據,新數據將寫入到原有內容的后面。
命令 >> 文件 2>&1
或者
命令 &>> 文件
將標準輸出或者錯誤輸出寫入到指定文件,如果該文件中已包含數據,新數據將寫入到原有內容的后面。注意,第一種格式中,最后的 2>&1 是一體的,可以認為是固定寫法。

【例 4】新建一個包含有 "Linux" 字符串的文本文件 Linux.txt,以及空文本文件 demo.txt,然后執行如下命令:

[root@localhost ~]# cat Linux.txt > demo.txt
[root@localhost ~]# cat demo.txt
Linux
[root@localhost ~]# cat Linux.txt > demo.txt
[root@localhost ~]# cat demo.txt
Linux     <--這里的 Linux 是清空原有的 Linux 之后,寫入的新的 Linux
[root@localhost ~]# cat Linux.txt >> demo.txt
[root@localhost ~]# cat demo.txt
Linux
Linux     <--以追加的方式,新數據寫入到原有數據之后
[root@localhost ~]# cat b.txt > demo.txt
cat: b.txt: No such file or directory  <-- 錯誤輸出信息依然輸出到了顯示器中
[root@localhost ~]# cat b.txt 2> demo.txt
[root@localhost ~]# cat demo.txt
cat: b.txt: No such file or directory  <--清空文件,再將錯誤輸出信息寫入到該文件中
[root@localhost ~]# cat b.txt 2>> demo.txt
[root@localhost ~]# cat demo.txt
cat: b.txt: No such file or directory
cat: b.txt: No such file or directory  <--追加寫入錯誤輸出信息

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 竹溪县| 项城市| 平南县| 广水市| 铁力市| 晋中市| 台州市| 桃源县| 军事| 正定县| 手机| 土默特左旗| 宜章县| 榆树市| 汾阳市| 恭城| 青神县| 司法| 杭州市| 邓州市| 威远县| 江口县| 毕节市| 商丘市| 蚌埠市| 三门县| 扶余县| 印江| 宁强县| 东丽区| 古蔺县| 武威市| 治县。| 通化市| 渑池县| 毕节市| 石首市| 浦东新区| 涡阳县| 奇台县| 佛坪县|