перенаправление вывода Linux терминал

голоса
3

Я хочу, чтобы перенаправить вывод Баш скрипт в файл.

Сценарий:

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

Но если я бегу это так:

script.sh >> temp.txt

только выход ./recursive будет захвачен в файле.

Я хочу, чтобы захватить вывод команды времени в файле.

Задан 25/02/2009 в 23:09
источник пользователем
На других языках...                            


2 ответов

голоса
8

Перенаправить STDERRна STDOUT:

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

Или при использовании bash4.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

Я не думаю, что это часть вашей проблемы, но, казалось, стоит упомянуть.

Ответил 25/02/2009 в 23:14
источник пользователем

голоса
2

Я предпочитаю метод & >> лучше, но это решение, а также:

$ script.sh 2>&1 |tee -a temp.txt
Ответил 16/03/2011 в 19:24
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more