Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


shell脚本中的"2< " ">&2" "&>"

2014-7-25 15:41    评论: 8 收藏: 3 分享: 1    

linux标准文件描述符:

文件描述符 缩写 描述
0 STDIN 标准输入
1 STDOUT 标准输出
2 STDERR 标准错误

标准输入和标准输出指的就是键盘和显示器。

当文件描述符(0,1,2)与重定向符号(<)组合之后,就可以重新定向输入,输出,及错误。

  • command    2>file1
    •    命令执行的错误信息保存到了file1文件中。显示屏只是显示正确的信息。
  • command    1>file1  2>file2 
    •    命令执行后,没有显示。因为正确输出到file1,错误定向到file2
  • command    &>file1
    • 命令执行后,输出和错误都定向到file1中

在shell脚本中,可以定义“错误”输出到STDERR指定的文件.需要在重定向符和文件描述符之间加一个and符(&)

cat test
#!/bin/bash
echo " this is ERROR "   >&2
echo  "this is output"
$

运行脚本

[root@localhost ~]# ./test 2>file1
this is output
[root@localhost ~]# cat file1
this is ERROR 

可以再脚本中使用exec命令:

exec 1>file1
exec 2>file2
echo " this is ERROR "   >&2
echo  "this is output"

运行如上脚本,则输出都在file1和file2中。

也可以使用exec 0<file1,从文件1中读取输入。

发表评论


最新评论

我也要发表评论

ManMaster 2014-7-25 16:33  新浪微博网友评论 回复
@小虾是我_我是小虾
无名的城堡 2014-7-26 17:33  新浪微博网友评论 回复
kashu 2014-7-26 20:54 回复
CMD &> /dev/null &
文剑一飞 2014-7-27 08:34 回复
“可以再脚本中使用exec命令:”错别字
[1]
文剑一飞 发表于 2014-7-27 08:34 的评论:

“可以再脚本中使用exec命令:”错别字
newtime 2014-7-28 08:45 回复
没太在意,下次谨慎。
[1]
kashu 发表于 2014-7-26 20:54 的评论:

CMD &> /dev/null &
newtime 2014-7-28 08:45 回复
不太理解最后的“&” 什么意思
[1]
kashu 发表于 2014-7-26 20:54 的评论:

CMD &> /dev/null &
[2]
newtime 发表于 2014-7-28 08:45 的评论:

不太理解最后的“&” 什么意思
newtime 2014-7-28 08:51 回复
是在后台模式运行命令吧,这个输出就定向到/dev/null 也就没信息了,不理解意义在哪
Lyric 2014-11-2 13:07 回复
学习shell 一直纠结的问题哦 现在中算一幕了然了 哈哈 谢谢分享!短小精悍!!!技术成就。。。
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。