您的位置:首页 > 运维架构 > Shell

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

2017-11-08 22:00 996 查看
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐