Назад | Перейти на главную страницу

Как перенаправить / сохранить консоль в файл и оставить ее видимой на экране?

Я хочу сохранить вывод программы (stdout) в файл, но при этом иметь возможность видеть вывод на экране в реальном времени.

Мне нужны решения как для Linux, так и для Windows.

В Linux вы можете использовать tee утилита.

В Windows PowerShell содержит tee командлет. Для cmd, вам нужно будет загрузить и установить отдельный утилита.

Linux: command | tee logfile

Windows: установите cygwin, затем запустите: command | tee logfile

В Linux и подобных системах:

program | tee filename

В tee программа отправляет все, что попадает на стандартный ввод, на стандартный вывод (например, cat), а также записывает его в указанный файл.

Другой способ получить тот же эффект -

program >filename 2>/dev/null &
tail -f filename

Это запускает программу в фоновом режиме, перенаправляя ее стандартный вывод в файл, а затем tail -f позволяет отслеживать данные, записываемые в файл в реальном времени (или почти так, может быть, с задержкой в ​​доли секунды). В 2>/dev/null заставляет стандартный поток ошибок исчезать, чтобы он не мешал выводу tail -f.

Для Windows вы можете сделать это:

dir> directory.txt и введите directory.txt

где бы вы заменили dir по вашему приложению.

Если вывод прокручивается слишком быстро, используйте:

dir> c: \ directory.txt & введите c: \ directory.txt | Больше

Однако я не думаю, что это позволит отображать содержимое файла в реальном времени. Вам придется подождать, пока процесс не завершится.

В Windows вы можете использовать tee если вы загрузите GnuWin32 его версия. Это то же самое, что и приложение для Linux, и происходит от пакет coreutils.

Однако одно предостережение: tee имеет собственный код возврата, поэтому вы не сможете заметить ошибки из процесса, переданного по конвейеру (если вы не работаете в Linux, есть способы обойти это).