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

标签 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 `)'

最佳答案

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

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

  1. 该行解析成功
  2. bash打开err.txtecho
  3. 的标准错误
  4. echo 尝试输出 )hey
  5. echo 遇到错误
  6. 错误信息写入err.txt

但是,bash 永远不会超过第一行,所以 2 到 5 都不会发生。相反,shell 会立即停止处理该行并将错误消息打印到它的自己的标准错误。

关于linux - 我对以下示例的重定向操作持怀疑态度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36524204/

相关文章:

linux - awk 将模式从一个文件匹配到另一个文件

perl - 从 perl 确定父 shell

c++ - 如何用C/C++语言在Linux/UNIX中查找一个进程的所有读写内存地址?

java - Java 应用程序最快的服务包装器

bash - 为什么 echo -n 在 Mac 上的 shell 中不起作用?

linux - 如何在 bash 的目录中显示具有最多硬链接(hard link)的文件

android - 我如何让 shell 执行存储在 rList 中的 Activity ?

linux - 如何在 Unix/Linux 操作系统上移动给定数量的随机文件

python - 在递归函数中获取扫描目录和文件的绝对路径?

arrays - 在 bash 中对数组进行循环