我对以下示例的重定向操作持怀疑态度

时间:2016-04-10 00:01:53

标签: linux bash shell unix

我成功地将错误消息重定向到以下过程中的文本文件:

  $ ls + 2>err.txt
  $ cat err.txt
  ls: cannot access +: No such file or directory

但是当我尝试使用echo命令尝试相同的进程时,它会显示不同的输出,并且无法将错误消息重定向到文本文件。

$ echo )hey 2>err.txt
bash: syntax error near unexpected token `)'

1 个答案:

答案 0 :(得分:3)

在第一个示例中,ls命令生成写入err.txt的错误消息。

在第二个命令中,您希望发生以下情况:

  1. 该行已成功解析
  2. bash打开err.txt标准错误echo
  3. echo尝试输出)hey
  4. echo遇到错误
  5. 错误消息将写入err.txt
  6. 但是,bash永远不会超过第一行,所以2到5都不会发生。相反,shell立即停止处理该行并将错误消息打印到其自己的标准错误。