Я компилирую использование программы, делают и хотят вывод, делают, чтобы быть записанным в файл. Я попытался использовать> оператор как
make > build_log.txt
и использование мишени управляет как
make | tee build_log.txt
но проблема состоит в том, что некоторые ouput входят в файл, но отдых продолжает появляться на экране.
Я могу просто скопировать/вставить текст от терминала в файл после того, как выполнение делает, но это не решение.
Таким образом, мой вопрос состоит в том, как я сохраняю т.е. перенаправляю весь вывод в файл так, чтобы он вошел в файл только, не появляясь на экране.
Текст, который отображен в терминале, прибывает из 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
и выводы это также.