Linux隨筆:輸入輸出重定向 2022-01-06


1、輸入輸出代碼

0 -- 標準輸入(stdin)
1 -- 標準輸出(stdout)
2 -- 標準錯誤輸出(stderr)

2、輸入重定向

命令 < file 從文件file讀取
命令 < file > file2 從文件file讀取并重定向至file2
命令 << 定界符,從標準輸入讀入,以自定義的定界符結(jié)束

[root@70 data]# cat <<EOF > cc.log 
> abc
> 123
> xyz
> EOF
[root@70 data]# cat cc.log 
abc
123
xyz
[root@70 data]#

3、輸出重定向

操作符 功能說明
1> 或 > 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把標準輸出和錯誤都重定
>& 與&>功能一致,推薦使用 &>

注意:如果設(shè)置了:
set -C 禁止覆蓋已有文件內(nèi)容(新文件可以),保留追加功能,但是仍可以使用 >| 強制覆蓋
set +C 恢復(fù)已有文件覆蓋功能

4、2>&1 、1>&2、>&、&> 使用

[root@centos8 ~]#ls /data /xxx > /data/all.log 2>&1
[root@centos8 ~]#ls /data /xxx 2> /data/all.log 1>&2
[root@centos8 ~]#ls /data /xxx &> /data/all.log
[root@centos8 ~]#ls /data /xxx >& /data/all.log
[root@centos8 ~]#ls /data /xxx 2>&1 > /data/all.log

分析:
ls /data /xxx > /data/all.log 2>&1
原先 1> 指向終端屏幕輸出
其中 > /data/all.log 定義將 1> 重定向到文件
2>&1 將錯誤輸出定向到 1>,故2 和 1都指向文件執(zhí)行輸出

ls /data /xxx 2> /data/all.log 1>&2
原先 2> 指向終端屏幕錯誤輸出
其中 2> /data/all.log 定義將 2> 重定向到文件
1>&2 將標準輸出定向到 2>,故1 和 2都指向文件執(zhí)行輸出

ls /data /xxx &> /data/all.log
&> 是簡要寫法
/data /xxx >& /data/all.log
與 &> 功能一致

ls /data /xxx 2>&1 > /data/all.log
原先 1 和 2 都指向終端屏幕輸出
2>&1 將 2 指向1,但是此時 1 仍指向屏幕,所以 2 指向了屏幕
最后的 > /data/all.log 將標準輸出1指向文件。
故最終標準輸出1指向文件,錯誤輸出2指向屏幕


總結(jié):輸出重定向,無論是標準輸出還是錯誤輸出必須先定義指定文件后才能指定"標準/錯誤輸出" 合并輸出到同一文件,順序顛倒可能會導(dǎo)致"標準/錯誤輸出" 無法合并輸出到同一文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容