shell输入输出重定向(不存在文件会自动创建)

来源:互联网 发布:手机网络代理ip 编辑:程序博客网 时间:2024/06/06 20:27

1.覆盖式输出重定向:>
cat for.sh > 1.txt
cat for.sh > 1.txt
cat for.sh > 1.txt
只写了一次,每次都先清除之前的内容(注意不只是覆盖,而是清空原文件内容),然后再写入下一次结果

2.追加式输出重定向:>>
cat for.sh > 1.txt
cat for.sh > 1.txt
cat for.sh > 1.txt
追加式,将for.sh的内容写到1.txt写3遍

3.错误输出重定向:2>
仅重定向错误信息;
1>及1>>是正确重定向,也是默认的重定向,分别等价于(>和>>)
而cat for.sh 2> 2.txt的意思是如果cat for.sh的错误信息重定向到2.txt,如果没有错误就不重定向,也是覆盖式错误重定向;
2>>是追加式错误重定向

4.将正确和错误信息同时重定向(一般在用在脚本中)
既有正确信息又有错误提示,这时输出重定向方法如下:
1)覆盖式输出重定向:
bash a.sh &> c.txt
或者bash a.sh 1>c.txt 2>&1

2)追加式重定向(1追加式,2沿着1重定向,是否追加取决于1)
bash a.sh 1>> c.txt 2>&1

例子:如下面的脚本文件:a.sh的内容如下:
这里写图片描述

(1)bash for.sh > c.txt
或者
bash for.sh 1> c.txt
c.txt本来为空,用>正确重定向只是把正确信息写入到了c.txt中,错误信息还是在屏幕中打印,且为覆盖式的最后c.txt中一个一次结果
这里写图片描述
(2)bash for.sh 2> d.txt
d.txt本来为空,用2>只把错误信息覆盖式的写入到了d.txt(不存在会自动创建),正确信息输出到屏幕上
这里写图片描述
(3)bash for.sh 1>> e.txt
e.txt本来不存在,用追加式重定向把正确信息追加到e.txt中,若e.txt之前存在内容也不会清空
这里写图片描述
(4)bash for.sh 2>> f.txt
f.txt原来存在三行数据,用2>>追加,不影响之前数据,且只追加错误信息
这里写图片描述
(5)bash for.sh &> e.txt
或者
bash for.sh 1> e.txt 2>&1
或者
bash for.sh 2> e.txt 1>&2

将正确信息和错误信息同时添加到e.txt中:这种方法只能覆盖式追加
,e.txt中原来有一行文字,用&>将for.sh的正确和错误信息同时添加到e.txt中,但是之前的那行信息被清掉了
这里写图片描述

(6)追加式正确&错误重定向:
bash for.sh 1>> h.txt 2>&1
或者
bash for.sh 2>> h.txt 1>&2
这里写图片描述