Linux终端输出重定向

标签 linux bash redirect

我想将 bash 脚本的输出重定向到一个文件。

脚本是:

#!/bin/bash
echo "recursive c"
for ((i=0;i<=20;i+=1)); do
time ./recursive
done

但是如果我这样运行它:

script.sh >> temp.txt

文件中只会捕获 ./recursive 的输出。

我想在文件中捕获时间命令的输出。

最佳答案

STDERR 重定向到 STDOUT:

script.sh >> temp.txt  2>&1

或者如果使用 bash 4.0:

$ script.sh &>> temp.txt

(感谢评论者 ephemient 提供第二种形式。我无法验证,因为我有一个较早的 bash。)


我的测试令人惊讶:

$ time sleep 1 > /dev/null 2>&1

real    0m1.036s
user    0m0.002s
sys     0m0.032s

问题是重定向作为要计时的命令的一部分包含在内。这是此测试的解决方案:

$ (time sleep 1) > /dev/null 2>&1

我认为这不是您问题的一部分,但似乎值得一提。

关于Linux终端输出重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/588144/

相关文章:

linux - 如何在软盘上测试引导加载程序

bash - 在 bash 中减去 2 个日期

C++ system() 导致 "Text file busy"错误

php - 使用 .htaccess 传递变量时将 url 重写为 php 文件

android - 如何在 Kali Linux 上打开 Android Studio

linux - bash 基于 ip 列表运行命令

linux - 除非 Arduino GUI 串行监视器打开,否则无法回显到 arduino 串行端口

bash - 如何通过进程重定向脚本的输出?

delphi - 如何使用 Delphi 和 Indy 跟踪 URL 重定向?

redirect - Ubuntu : Port forwarding to a guest VM 上的 KVM