捕获bash输出的语法有什么区别?

ajax_velu

我通常使用

./aaa.sh 2>&1 | tee -a log

但是找到了一条看起来更容易的新命令:

./aaa.sh &> log

那么我在第二种情况下会放弃什么呢?

B层

苹果和橘子。但首先...

至于2>&1vs &>,它们都可以将stderr定向到stdout所指向的相同位置

但是由于第二个版本不兼容POSIX,因此您放弃了第二个版本的可移植性,并且任何使用它的脚本都只能与支持它的Shell一起使用。

话虽如此,但正如Bash手册页中所述,它们“在语义上是等效的” ...

重定向标准输出和标准错误有两种格式:

      &>word    and
      >&word

在两种形式中,第一种是优选的。这在语义上等同于

      >word 2>&1

使用第二种形式时,单词可能不会扩展为数字或-。如果是这样,出于兼容性原因,将应用其他重定向操作符(请参阅下面的“复制文件描述符”)。

然而,还有更多。您还将使用tee向第一个版本添加其他功能命令。它将使用其stdin输入并将其定向到两个不同的位置:stdout(如果正在以交互方式运行,通常是屏幕/终端)和将附加数据的指定文件-a表示附加而不是覆盖)。

将此与第二个版本进行比较,在第二个版本中,组合的stdoutstderr会覆盖log文件,并且不会在屏幕/终端上显示。

结论:这些真的是两个不同的命令完全的开始,但是,拉伸等价的概念,提到一般来说第一个版本是优越的,因为它是便携式你看到的输出的好处aaa.sh,甚至当它被保存到一份文件。当然,如果您不想看到它,或者想要删除以前的文件内容,那就另当别论了。苹果和橘子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ReactJs组件语法有什么区别?

来自分类Dev

ReactJs组件语法有什么区别?

来自分类Dev

标准语法和BSD语法有什么区别?

来自分类Dev

标准语法和BSD语法有什么区别?

来自分类Dev

使用此语法分配bash变量值有什么区别?

来自分类Dev

bash和sh有什么区别?

来自分类Dev

bash中的&>和>&有什么区别?

来自分类Dev

terminal和bash有什么区别?

来自分类Dev

bash中的>和>>有什么区别

来自分类Dev

bash的输出重定向->>和>&,重定向和复制之间有什么区别?

来自分类Dev

bash中用于对输出和命令进行分组的()和{}有什么区别

来自分类Dev

Bash 和 Zsh 上 kill -l 的输出有什么区别?

来自分类Dev

这些`git fetch`语法之间有什么区别?

来自分类Dev

Ruby语法-(?和if else之间有什么区别?

来自分类Dev

类语法和type()有什么区别?

来自分类Dev

这两种语法有什么区别?

来自分类Dev

Lucene查询语法中AND和+有什么区别

来自分类Dev

该区域语法之间有什么区别?

来自分类Dev

python语法中的True和False有什么区别?

来自分类Dev

Terraform 语法和格式之间有什么区别?

来自分类Dev

这里的 setState 回调语法有什么区别?

来自分类Dev

登录到“ -bash”,而不是“ bash”。有什么区别?

来自分类Dev

dmesg输出和/ var / log / messages有什么区别?

来自分类Dev

Laravel验证错误输出有什么区别?

来自分类Dev

有什么区别?

来自分类Dev

有什么区别

来自分类Dev

有什么区别?

来自分类Dev

有什么区别?

来自分类Dev

有什么区别?