Linux 下的輸入輸出和重定向示例
阿新 • • 發佈:2022-12-11
Linux 下的輸入輸出和重定向示例
作者:Grey
原文地址:
說明
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