有关linux标准输出、标准输入、标准错误的重定向问题
2013-07-03 21:59
267 查看
1、简单的命令行重定向问题。
例:ls -al test test1 test2 1>out.txt 2>err.tx
这里ls这句命令行命令之后将标准输入重定向到out.txt中,标准错误重定向到err.txt中。
2、文件中临时重定向题
例:$ cat test1
#!/bin/bash
#!关于测试临时重定向问题
echo "This is an error!" >&2 #将这句话临时重定向为标准错误
echo "This is normal output! "
正常运行这个脚本:./test1
结果为:This is an error!
This is normal output!
这看不出什么区别,那么来看下面这样运行:./test1 1>out.txt 2>err.txt
结果终端界面上不会出现脚本的运行结果,这里把标准输入重定向到out.txt中,标准错误重定向到err.txt中,而脚本中将“This is an error!"
这句话临时重 定向为标准错误,而脚本中正常的输出为”This is normal output!“ 。所以分别cat out.txt和cat err.txt两个文件即可发现脚本中的两句话。
3、永久重定向
如果脚本中有大量的数据需要重定向,那么按上面的方法,一句一句来会很麻烦,那来看下面的例子
例:$ cat test2
#!/bin/bash
#!关于批量永久重定向
exec 2>err.txt #将本脚本中的标准输出永久重定向到out.txt中
echo " This is just a testing!"
echo "HaHa!"
exec 1>out.txt #以下内容中标准输出重定向到out.txt
echo "Now the testing is over!"
echo " This is a testing error!" >&2
然后运行脚本 ./test2
结果为:This is just a testing!
HaHa!
其余两句我们分别可以在out.txt和err.txt中见到,脚本中将“This is a testing error!"临时重定向为了标准错误,因此脚本将其重定向到了err.txt。
这就是批量永久重定向。
4、在脚本中重定向输入
例: $ cat test3
#!/bin/bash
#!测试脚本中输入重定向
exec 0<input.txt #将input.txt中的内容作为输入重定向到脚本中
count=1
while read line
do
echo "#$count :$line "
count=$(($count+!))
done
这个可以用于批量读入文件等地方,很多都可以用。
例:ls -al test test1 test2 1>out.txt 2>err.tx
这里ls这句命令行命令之后将标准输入重定向到out.txt中,标准错误重定向到err.txt中。
2、文件中临时重定向题
例:$ cat test1
#!/bin/bash
#!关于测试临时重定向问题
echo "This is an error!" >&2 #将这句话临时重定向为标准错误
echo "This is normal output! "
正常运行这个脚本:./test1
结果为:This is an error!
This is normal output!
这看不出什么区别,那么来看下面这样运行:./test1 1>out.txt 2>err.txt
结果终端界面上不会出现脚本的运行结果,这里把标准输入重定向到out.txt中,标准错误重定向到err.txt中,而脚本中将“This is an error!"
这句话临时重 定向为标准错误,而脚本中正常的输出为”This is normal output!“ 。所以分别cat out.txt和cat err.txt两个文件即可发现脚本中的两句话。
3、永久重定向
如果脚本中有大量的数据需要重定向,那么按上面的方法,一句一句来会很麻烦,那来看下面的例子
例:$ cat test2
#!/bin/bash
#!关于批量永久重定向
exec 2>err.txt #将本脚本中的标准输出永久重定向到out.txt中
echo " This is just a testing!"
echo "HaHa!"
exec 1>out.txt #以下内容中标准输出重定向到out.txt
echo "Now the testing is over!"
echo " This is a testing error!" >&2
然后运行脚本 ./test2
结果为:This is just a testing!
HaHa!
其余两句我们分别可以在out.txt和err.txt中见到,脚本中将“This is a testing error!"临时重定向为了标准错误,因此脚本将其重定向到了err.txt。
这就是批量永久重定向。
4、在脚本中重定向输入
例: $ cat test3
#!/bin/bash
#!测试脚本中输入重定向
exec 0<input.txt #将input.txt中的内容作为输入重定向到脚本中
count=1
while read line
do
echo "#$count :$line "
count=$(($count+!))
done
这个可以用于批量读入文件等地方,很多都可以用。
相关文章推荐
- linux 重定向 标准输入 标准输出 标准错误输出
- Linux开发--探讨将标准输入输出及错误重定向到/dev/null
- Linux标准输入、输出和错误和文件重定向(转)
- echo、read、tee、标准输入0、输出1、错误输出2、重定向>、追加重定向>>
- Linux文本流和标准输入、标准输出、标准错误与重定向介绍
- 标准输入、输出和错误和文件重定向
- Linux下C编程-----文件操作(1) 通过系统调用简单操作标准输入、标准输出、标准错误
- shell脚本之重定向、标准输入、输出、错误输出的使用
- linux 重定向 标准错误与标准输出到同一文件
- Linux:标准输入、输出、错误
- 标准输入标准输出标准错误重定向
- Linux 标准 输入 输出 重定向. printf 不输出到屏幕的解决办法
- linux标准输入输出错误输出
- Linux Bash Shell高级重定向操作--深入了解标准错误输出和标准输出
- 标准输入、输出和错误和文件重定向
- Linux 标准输出重定向 缺失的问题
- 分享:Linux标准输入/输出和重定向
- Linux 标准输入输出及重定向
- 转:python重定向标准输入、标准输出和标准错误
- Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用