0
Перенаправление вывода терминала Linux
Я хочу перенаправить вывод сценария bash в файл.
Сценарий такой:
#!/bin/bash
echo "recursive c"
for ((i=0;i<=20;i+=1)); do
time ./recursive
done
Но если я запустил это так:
script.sh >> temp.txt
в файл будет записан только вывод ./recursive.
Я хочу записать вывод команды времени в файл.
Ответов (2)2
Решение
0
Перенаправить 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
Я не думаю, что это часть вашей проблемы, но, похоже, стоит упомянуть об этом.