1. 程式人生 > 其它 >Linux 下的輸入輸出和重定向示例

Linux 下的輸入輸出和重定向示例

Linux 下的輸入輸出和重定向示例

作者:Grey

原文地址:

部落格園:Linux 下的輸入輸出和重定向示例

CSDN:Linux 下的輸入輸出和重定向示例

說明

Linux 下的輸入輸出有如下三種形式

裝置 裝置名 檔案描述符 型別
鍵盤 /dev/stdin 0 標準輸入
顯示器 /dev/stdout 1 標準輸出
顯示器 /dev/stderr 2 標準錯誤輸出

Linux 的輸入重定向符號是 <

例如

read var < /path/to/a/file

輸出重定向符號有如下幾種:>>>2>&>

>表示清空輸入

echo 123 > /path/to/a/file 

>>表示追加輸入

echo 123 >> /path/to/a/file

2>表示錯誤輸入

echo 12343 2> /path/to/a/file 

&>表示全部輸入

echo 122 &> /path/to/a/file 

示例

以下示例中,/asdfasdfasdf目錄不存在,所以執行ls會報錯

[root@sec ~]# ls ./ /asdfasdfasdf 1>ls01.out
ls: cannot access '/asdfasdfasdf': No such file or directory
[root@sec ~]# cat ls01.out 
./:
abc.txt
anaconda-ks.cfg
cat.out
ls01.out
ls.out

由於1表示標準輸出,所以ls01.out中只記錄了非錯誤的資訊,即ls ./的內容

如果要儲存錯誤資訊,可以通過如下方式:

[root@sec ~]# ls ./ /asdfasdfasdf 1>ls01.out 2>ls03.out
[root@sec ~]# cat ls03.out 
ls: cannot access '/asdfasdfasdf': No such file or directory

或者這樣

[root@sec ~]# ls ./ /asdfasdfasdf 1> ls04.out 2>&1
[root@sec ~]# cat ls04.out 
ls: cannot access '/asdfasdfasdf': No such file or directory
./:
a
abc.txt
anaconda-ks.cfg
cat.out
ls01.out
ls02.out
ls03.out
ls04.out
ls.out

如果要丟棄用不著的輸出結果,可以使用如下命令:

ls -l /bin/usr 2> /dev/null