На этот вопрос уже есть ответ здесь:
Как сделать записать вывод сценария bash из терминала без подавления вывода терминала, например $ ./bash-script.sh >> terminal.txt
? и я хочу записать полученный результат в текст и также сохранить его в терминале.
tee
команда хороша для получения вывода от неинтерактивных команд. Для приложений интерактивного терминала, пакета bsdutils
дает Вам script
команда, которая позволяет записывать вывод к терминалу, позволяя Вам взаимодействовать с приложением как обычный. Различие между этими двумя - это script
произведет приложению впечатление от выполнения под терминалом, и это могло бы иметь значение, как утилита ведет себя. Кроме того, script
фиксирует стандартную ошибку, не требуя, чтобы сделать дополнительные перенаправления в командной строке оболочки.
Можно использовать его как это:
$ script -c script.sh output.log
(где script.sh
как предполагается, найден в $PATH
) или
$ script -c "script.sh arguments" output.log
Выполнение его без -c "${command}"
опция выполнит оболочку и позволяет сохранять сессию оболочки в файл.
Как bsdutils
"существенный" пакет, и его приоритет "требуется", Вам можно было бы установить его уже. Просто попытайтесь дать команду script
(сопровождаемый exit
прекратить записывать в файл по умолчанию typescript
).
В целом я лично обычно предпочитаю script
tee
хотя много приложений интерактивного терминала, кажется, работают очень хорошо, когда произведенный передается по каналу к tee
.
гЂЂI хотят записать получающийся вывод, чтобы написать и сохранить его в терминале также
, Что Вы хотите, tee
команда. Это позволяет повторять текст к stdout
и в файл. Например:
$ ls -l /etc/passwd | tee output_file.txt
-rw-r--r-- 1 root root 2989 6月 17 20:45 /etc/passwd
$ cat output_file.txt
-rw-r--r-- 1 root root 2989 6月 17 20:45 /etc/passwd
Можно использовать tee
, Например,
./script.sh | tee logfile
заставит вывод сценария быть сохраненным в logfile
, а также показанным в терминальном выводе.
, Если Вы хотите сохранить все выводы последующего выполнения сценария, можно хотеть к , добавляют в тот файл. В этом случае Вы использовали бы tee -a
вместо этого
./script.sh | tee -a logfile
./script2.sh | tee -a logfile