博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

说说linux shell脚本中的&符

Posted on 2012-05-15 23:02  三块石头  阅读(496)  评论(0)    收藏  举报

zhaolei:~ zhaolei$ zl > hello.txt

-bash: zl: command not found 

 

由于zl命令不存在,所以会提示错误,我们希望将错误输入到hello.txt中,结果是生成了hello.txt文件,但是其内容为空.怎么办?可以运行下面的命令.

zhaolei:~ zhaolei$ zl > hello.txt 2>&1

#查看hello.txt内容

zhaolei:~ zhaolei$ cat hello.txt

-bash: zl: command not found

 

也就是说把错误信息输入到了hello.txt文件中了.假设zl命令存在,hello.txt的内容就为zl执行后返回的内容,当程序出错后,错误内容也被写入到hello.txt中

2>&1中的数字有不同的意思,可选为0-2

0:标准键盘输入

1:屏幕输出

2:错误输出

 

2>&1 就是把标准错误输入到屏幕上.为什么前面有个&符号?

 

比如我们执行 echo 2>1 就是把2写入到文件1中,为了区别,我们在前面加上了&符号

 

如果我们像把正常的,错误的信息都输入到文件,可以写为 ./zl &>hello.txt

 

或者我们就想执行./zl而不管什么错误或者正确,可以写为 ./zl &>/dev/null 

 

/dev/null相当于黑洞设备,你可以把任何东西扔进去,相当于一个垃圾桶.但你无法查看垃圾桶里面的内容