Как записать вывод сценария bash из терминала без подавления вывода терминала? [дубликат]

На этот вопрос уже есть ответ здесь:

Как сделать записать вывод сценария bash из терминала без подавления вывода терминала, например $ ./bash-script.sh >> terminal.txt ? и я хочу записать полученный результат в текст и также сохранить его в терминале.

8
задан 15 September 2017 в 13:40

3 ответа

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.

7
ответ дан 23 November 2019 в 05:22

гЂЂ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
8
ответ дан 23 November 2019 в 05:22

Можно использовать tee

, Например,

./script.sh | tee logfile

заставит вывод сценария быть сохраненным в logfile, а также показанным в терминальном выводе.

, Если Вы хотите сохранить все выводы последующего выполнения сценария, можно хотеть к , добавляют в тот файл. В этом случае Вы использовали бы tee -a вместо этого

./script.sh | tee -a logfile
./script2.sh | tee -a logfile
8
ответ дан 23 November 2019 в 05:22

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

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