1、輸入輸出代碼
0 -- 標(biāo)準(zhǔn)輸入(stdin)
1 -- 標(biāo)準(zhǔn)輸出(stdout)
2 -- 標(biāo)準(zhǔn)錯(cuò)誤輸出(stderr)
2攻人、輸入重定向
命令 < file 從文件file讀取
命令 < file > file2 從文件file讀取并重定向至file2
命令 << 定界符贾惦,從標(biāo)準(zhǔn)輸入讀入启搂,以自定義的定界符結(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窖式、輸出重定向
操作符 | 功能說(shuō)明 |
---|---|
1> 或 > | 把STDOUT重定向到文件 |
2> | 把STDERR重定向到文件 |
&> | 把標(biāo)準(zhǔn)輸出和錯(cuò)誤都重定 |
>& | 與&>功能一致,推薦使用 &> |
注意:如果設(shè)置了:
set -C 禁止覆蓋已有文件內(nèi)容(新文件可以)痊项,保留追加功能锅风,但是仍可以使用 >| 強(qiáng)制覆蓋
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 將錯(cuò)誤輸出定向到 1>咖驮,故2 和 1都指向文件執(zhí)行輸出
ls /data /xxx 2> /data/all.log 1>&2
原先 2> 指向終端屏幕錯(cuò)誤輸出
其中 2> /data/all.log 定義將 2> 重定向到文件
1>&2 將標(biāo)準(zhǔn)輸出定向到 2>边器,故1 和 2都指向文件執(zhí)行輸出
ls /data /xxx &> /data/all.log
&> 是簡(jiǎn)要寫(xiě)法
/data /xxx >& /data/all.log
與 &> 功能一致
ls /data /xxx 2>&1 > /data/all.log
原先 1 和 2 都指向終端屏幕輸出
2>&1 將 2 指向1,但是此時(shí) 1 仍指向屏幕托修,所以 2 指向了屏幕
最后的 > /data/all.log 將標(biāo)準(zhǔn)輸出1指向文件忘巧。
故最終標(biāo)準(zhǔn)輸出1指向文件,錯(cuò)誤輸出2指向屏幕
總結(jié):輸出重定向睦刃,無(wú)論是標(biāo)準(zhǔn)輸出還是錯(cuò)誤輸出必須先定義指定文件后才能指定"標(biāo)準(zhǔn)/錯(cuò)誤輸出" 合并輸出到同一文件砚嘴,順序顛倒可能會(huì)導(dǎo)致"標(biāo)準(zhǔn)/錯(cuò)誤輸出" 無(wú)法合并輸出到同一文件。