как получить вывод сценария/программы в файл?

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

make > build_log.txt

и использование мишени управляет как

make | tee build_log.txt

но проблема состоит в том, что некоторые ouput входят в файл, но отдых продолжает появляться на экране.

Я могу просто скопировать/вставить текст от терминала в файл после того, как выполнение делает, но это не решение.

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

6
задан 16 June 2011 в 02:49

1 ответ

Текст, который отображен в терминале, прибывает из stderr поток (2). Если Вы делаете просто make > build_log.txt, только stdout (1) поток перенаправляется к build_log.txt файл.

  • stdout поток стандартного вывода и имеет дескриптор файла номер 1. Это - поток по умолчанию, перенаправляемый в оболочках.
  • stderr поток стандартной погрешности и имеет дескриптор файла номер 2

Перенаправить stderr поток к этому build_log.txt файл также, используйте:

make > build_log.txt 2>&1
  • make выполняется и
    • stdout поток перенаправляется (>) к build_log.txt
    • stderr поток перенаправляется (2>) к stdout поток (&1), который был перенаправлен к build_log.txt

Порядок важен, Вы не можете переключиться, переключают операторы перенаправления как make 2>&1 > build_log.txt.

Альтернативная команда:

make 2>&1 | tee build_log.txt > /dev/null

Перенаправление к /dev/null необходим для сокрытия вывода, tee пишет его вход в build_log.txt и выводы это также.

10
ответ дан 23 November 2019 в 07:32

Другие вопросы по тегам:

Похожие вопросы: