【发布时间】:2018-12-22 04:28:53
【问题描述】:
哪个更好?
cmd >>file 2>&1cmd 1>>file 2>>file
有区别吗?
我知道选择第一个的两个原因:它也适用于 > 而不是 >>。它更受欢迎,因此知道 shell 脚本的人会立即排除它。
但是,我仍然觉得第二个可读性更好,并且无需了解 [n]>&[n] 语法即可工作,恕我直言,这有点令人困惑。
【问题讨论】:
-
是否有两个打开的文件描述(带有它们自己的,大多是无意义的文件偏移量)算作差异?
-
您通常会将第二种形式视为
cmd 1>>outfile 2>>errfile(这是使用两个描述符的唯一好处) -
在现代 shell 中,您只需使用
&>>(bash) 或>>&(tcsh)。 -
或者对于 bash,如果同时重定向两者,只需
&>file。 -
@DavisHerring 如果这是一个实际问题,(速度/最大打开文件/...)应该考虑在内。但我更想知道拥有两个文件描述符是否会产生真正的区别,比如混淆输出序列
标签: shell