Подтвердить что ты не робот

Как регистрировать вывод в bash и видеть его в терминале одновременно?

У меня есть несколько сценариев, где мне нужно увидеть выходные данные и для вывода результата в файл, причем самым простым примером является

$ update-client > my.log

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

4b9b3361

Ответ 1

update-client 2>&1 | tee my.log

2 > & 1 перенаправляет стандартную ошибку на стандартный вывод, а tee отправляет свой стандартный вход в стандартный вывод и файл.

Ответ 2

Просто используйте хвост для просмотра файла по мере его обновления. Обозначьте исходный процесс, добавив и после указанной выше команды. После выполнения приведенной выше команды просто используйте

$ tail -f my.log

Он будет постоянно обновляться. (обратите внимание, что он не скажет вам, когда файл завершит работу, чтобы вы могли вывести что-то в журнал, чтобы сообщить вам об этом. Ctrl-c для выхода из хвоста)

Ответ 3

другой вариант заключается в использовании захвата на основе блоков из script (не уверен, что это правильный технический термин).

Пример

#!/bin/bash 
{
  echo "I will be sent to screen and file"
  ls ~
} 2>&1 | tee -a /tmp/logfile.log

echo "I will be sent to just terminal"

Мне нравится больше контроля и гибкости - поэтому я предпочитаю этот путь.

Ответ 4

Для этого вы можете использовать команду tee:

command | tee /path/to/logfile

Эквивалент без записи в оболочку будет:

command > /path/to/logfile

Если вы хотите добавить ( → ) и показать вывод в оболочке, используйте параметр -a:

command | tee -a /path/to/logfile

Обратите внимание, что труба будет захватывать только stdout, ошибки в stderr не обрабатываются трубой с тройником. Если вы хотите регистрировать ошибки (из stderr), используйте:

command 2>&1 | tee /path/to/logfile

Это означает: выполнить команду и перенаправить поток stderr (2) в stdout (1). Это будет передано трубе с тие-приложением.

Узнайте об этом на сайте askubuntu