Терминал Linux. Как сохранить в файл вывод терминала.
В данной статье пойдет речь о том, как перенаправить вывод любой команды терминала (консоли) Linux в текстовый файл.

Комментирование приветствуется.

Порой, вывод некоторых терминальных команд может быть огромным. К примеру, список программ, которые могут быть обновлены:

apt list --upgradable

Намного удобнее перенаправить вывод данной команды в текстовый файл и уже просмотреть его с помощью удобного текстового редактора.

А кто-то просто захочет вести лог выполнения каких-то команд в системе или лог ошибок. В общем, каждый найдет для себя применение этой возможности.

Прежде чем перейти к обсуждению сохранения вывода команд терминала в файл, немножко теории о стандартных потоках вывода Linux.

Стандартные потоки вывода Linux.

Подробнее о стандартных потоках можно прочитать в Википедии:

Стандартные_потоки

Если по существу, то в Linux есть 3 стандартных потока:

  • stdin - поток номер 0, стандартный поток ввода.

  • stdout - поток номер 1, стандартный поток вывода.

  • stderr - поток номер 2, стандартный поток ошибок, диагностических и отладочных сообщений.

Когда мы выполняем какую-либо команду в терминале:

Выполнение команд в терминале

Вывод всех, выполненных команд на скриншоте выше, это stdout - стандартный поток вывода.

А вот вывод стандартного потока ошибок stderr:

Вывод стандартного потока ошибок

Как видно на скриншоте, строки с ошибками начинаются с буквы "E:" (error), а предупреждающая информация c W: (warning).

С определениями, названиями стандартных потоков разобрались. Теперь можно перейти к способам сохранения вывода терминала в файл.

Базовый способ сохранения в файл вывода терминала (консоли) Linux.

Стандартный поток вывода перенаправляется с помощью символа ">", то есть самый простой вариант перенаправления вывода терминала в файл будет выглядеть следующем образом:

какая_либо_команда > название_файла.txt

то есть, после команды ставим > , в результате чего, вывод команды будет сохранен в файл "название_файла.txt".

Реальный пример команды:

apt list --upgradable > output.txt

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

Cохранения в файл вывода терминала

Cохранения в файл вывода терминала

Cохранения в файл вывода терминала

Если указать одинарный символ ">", то файл будет постоянно перезаписываться при повторном выполнении команды.

Чтобы новая информация добавлялась в конец файла, а не перезаписывался весь файл, нужно использовать двойной символ ">>". Команда будет выглядеть следующим образом:

apt list --upgradable >> output.txt

Cохранения в файл вывода терминала

Cохранения в файл вывода терминала

Мы перенаправляли стандартный поток вывода в файл, но ошибки у нас отображаются в терминале, а в файл текст ошибки добавлен не будет.

Сейчас я описал самый обычный способ перенаправления стандартного потока вывода stdout в текстовый файл. Теперь разберем другие способы.

8 базовых способов сохранения вывода терминала в файл.

Для большой наглядности я нарисовал табличку:

Таблица способов сохранения вывода терминала в файл

Список способов:

1. Стандартный поток вывода будет перенаправлен в файл, в терминале виден не будет. Если файл существует, то будет перезаписан.

command > output.txt

2. Стандартный поток вывода будет перенаправлен в файл, в терминале виден не будет. Новая информация будет записана в конец существующего файла.

command >> output.txt

3. Стандартный поток ошибок будет перенаправлен в файл, в терминале виден не будет. Если файл существует, то будет перезаписан.

command 2> output.txt

4. Стандартный поток ошибок будет перенаправлен в файл, в терминале виден не будет. Новая информация будет записана в конец существующего файла.

command 2>> output.txt

5. Стандартный поток вывода и стандартный поток ошибок вместе будут перенаправлены в файл, в терминале видны не будет. Если файл существует, то будет перезаписан.

command &> output.txt

6. Стандартный поток вывода и стандартный поток ошибок вместе будут перенаправлены в файл, в терминале видны не будет. Новая информация будет записана в конец существующего файла.

command &>> output.txt

7. Стандартный поток вывода будет скопирован в файл, в терминале будет по-прежнему виден. Если файл существует, то будет перезаписан.

command | tee output.txt

8. Стандартный поток вывода будет скопирован в файл, в терминале будет по-прежнему виден. Новая информация будет записана в конец существующего файла.

command | tee -a output.txt

Как вывести полную информацию о компьютере и сохранить эту информацию в html, pdf.

В Linux есть команда, которая выводит всю информацию о компьютере в терминал lshw (от англ. list hardware).
Её нужно запускать с правами суперпользователя sudo:

sudo lshw

Выполнение команды lshw в терминале

Но не совсем удобно читать эту информацию в терминале.

У данной команды есть параметр -html, который позволяет вывести данную информацию в html. Теперь, когда мы научились перенаправлять вывод команд терминала в файл, давайте выведем информацию о системе и компьютере в удобно читаемый html файл:

sudo lshw -html > system_info.html

В текущем каталоге создастся html файл, который можно открыть любым, установленным у вас в системе, браузером:

Полная информация о компьютере в html файле

И теперь, если мы хотим сохранить в pdf эту информацию, то выбираем печать (CTRL-P), формат pdf и нажимаем "Печать".


Комментарии отключены