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

7

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

    
задан Pavel Sayekat 07.09.2016 в 04:14
источник

3 ответа

6

Команда 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 .

    
ответ дан FooF 07.09.2016 в 06:52
источник
8
  

Я хочу записать полученный результат в текст и сохранить его в терминале, а

Вам нужна команда 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
    
ответ дан Sergiy Kolodyazhnyy 07.09.2016 в 05:23
источник
8

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

Например,

./script.sh | tee logfile

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

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

./script.sh | tee -a logfile
./script2.sh | tee -a logfile
    
ответ дан Anwar 07.09.2016 в 04:24
источник

Ознакомьтесь с другими вопросами по меткам