bash命令重定向到哪里

时间:2018-06-09 08:53:52

标签: bash io-redirection

我正在尝试使用以下bash命令“命令< f1> f2 2> f3”它是否会如下工作?

    来自f1的
  • stdin将被重定向到命令
  • 命令中的stdout将被重定向到f2
  • 来自命令的
  • 和stderr将被重定向到f3

由于

1 个答案:

答案 0 :(得分:4)

执行命令行时

somecommand <f1 >f2 2>f3
  1. shell将f1与命令的标准输入流和
  2. 连接
  3. 命令的标准输出流f2
  4. 命令的f3标准错误流,
  5. 按此顺序。

    请注意,重定向的顺序很重要:

    • 如果f1不可读,则会产生错误(由shell生成),并且命令将不会执行。 f2都不会被创建或截断。

    • 如果f3不可写,则会产生错误(由shell生成),并且命令不会执行。 <{1}}将不会被创建或截断。

    • 如果f2不可写,则会产生错误(由shell生成),并且命令不会执行。 <{1}}仍会被创建和/或截断。

    然而,f3在命令行上的相对位置并不重要。

    f3

    相同
    f2

    somecommand

    somecommand <f1 >f2 2>f3
    

    这是因为重定向与它们影响的命令分开处理,并且它们不是命令的命令行参数。

    另见: