这个重定向有什么区别
some-program &> some_file
和这个?
some-program > some_file 2>&1
答案1
在bash
和zsh
shell 中,两者没有区别。重定向&>file
是作为 POSIX 标准的扩展实现的语法糖,其含义与标准完全相同>file 2>&1
。
请注意,在由非/解释器&>
执行的脚本中使用重定向可能会以有趣的方式破坏您的脚本,因为和会被相互独立地解释。bash
zsh
&
>
some_command &>file
在非-bash
/zsh
脚本中,将与
some_command & >file
并作为
some_command &
>file
这some_command
作为后台作业启动,并截断/创建名为file
.
还相关:
答案2
第二种形式符合 POSIX 标准,并且可以在任何 POSIX shell 中工作。
第一种形式完全相同,但它只能在支持缩写形式的 shell 中工作(Bash 和 Zsh,仅举两个例子),而在其他形式中会失败(例如,Dash,/bin/sh
Debian 及其衍生版本中使用的实现)。
如果可移植性很重要,您应该使用两步形式。