LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1873|回复: 4

&> 与 >& 有什么区别与联系?

[复制链接]
发表于 2003-4-22 21:10:36 | 显示全部楼层 |阅读模式
&>   与   >&  有什么区别与联系?
发表于 2003-4-22 23:51:46 | 显示全部楼层
> 是输出重定向,
& 是后台处理,
>& 命令的输出重定向到一个文件描述符1,2,如:用find查找信息时,把你不需要看到的无用信息重定向到标准错误等.,
&> 执行的命令先作后台处理,然后以文件的形式保存,如:ls&>tmp
他们的联系:都是涉及输出重定向的,区别:用途不一样,形成的结果自然不同.
 楼主| 发表于 2003-4-23 11:30:55 | 显示全部楼层
Redirecting Standard Output and Standard Error
       Bash  allows both the standard output (file descriptor 1) and the stan-
       dard error output (file descriptor 2) to  be  redirected  to  the  file
       whose name is the expansion of word with this construct.

       There  are  two  formats  for  redirecting standard output and standard
       error:

              &>word
       and
              >&word

       Of the two forms, the first is preferred.  This is semantically equiva-
       lent to

              >word 2>&1

以上是从bash man pages烤来的,我只看到相同点:用途是一样的-----同时重定向标准错误和标准输出到文件.
发表于 2003-4-23 14:28:50 | 显示全部楼层

Re: &> 与 >& 有什么区别与联系?

最初由 nobody_am 发布
&>   与   >&  有什么区别与联系?

&> 表示将stdout和stderr全部定向到某处,如:
ls &> list

>& 是将一个文件描述名柄重定向到另一个文件描述句柄,如:
ls /dev/jsdkfsjd > err 2>&1  将stderr定向到stdout,然后再将stdout定向到文件err。

>& 两边只能是文件描述名柄,并且两边必须要有文件描述符。如: 2>&3   1>&4

&> 这个描述符两边不能出现文件描述名柄,它本身就表示将所有输出(stdout和stderr)重定向,因而它有一个默认的操作:2>&1  (注:sh不支持该操作符,所以就要用> file 2>&1来代替它)
 楼主| 发表于 2003-4-23 15:27:20 | 显示全部楼层
明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表