bash - 对 Bash 重定向的细粒度控制

标签 bash redirect

考虑以下 Bash 命令行:

time ls         # Sends directory contents to stdout
time ls --foo   # Sends an error message to stderr (--foo is an invalid option)

time 的输出(正常输出和错误输出)重定向到一个文件,并将 ls 的输出重定向到另一个文件:

time ( ls       &>ls.txt ) &>time.txt
time ( ls --foo &>ls.txt ) &>time.txt

time 的错误输出重定向到 time.txt 并将 ls 的输出发送到终端:

time ( ls       &>/dev/stdout ) 2>time.txt
time ( ls --foo &>/dev/stdout ) 2>time.txt

上面两行将ls的正常输出和错误输出合并到stdout(fd 1)中。我想执行以下操作:ls的输出发送到终端(正常输出到stdout,错误输出到stderr),以及time的错误输出> 到 time.txt。从概念上讲:

time ( ls       1>/dev/stdout 2>/dev/stderr ) 2>time.txt
time ( ls --foo 1>/dev/stdout 2>/dev/stderr ) 2>time.txt

不幸的是,最后一行无法正常工作,因为 ls 的错误输出被写入 time.txt 中。

如何将ls的正常输出发送到stdout,ls的错误输出发送到stderr,以及time<的错误输出time.txt

最佳答案

这可能对你有用:

{ time ls --foo 2>&3; } 3>/dev/stderr 2>time.txt

关于bash - 对 Bash 重定向的细粒度控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9239231/

相关文章:

bash - 如何在 smb ://URL 的密码字段中转义 @ 符号

javascript - 重定向到另一个页面而不在 jquery 中加载当前页面

php - 将 Wordpress 的登录/注册页面重定向到自定义登录/注册页面

apache - 我可以一起使用mod_rewrite和apache自定义错误处理吗?

ruby-on-rails - 重定向到 Rails 中的另一个 Controller

javascript - 如何使用Coffeescript和shellJS编写可执行的shell脚本?

linux - 在 Linux 中打印文件的第 3、4 和 5 行

C : bash event not found

linux - 从文件中提取路径然后将文件复制到另一个路径并将它们重命名为 bash 脚本

redirect - 如何使用参数对单个 URL 进行 301 永久重定向