ГлавнаяОперационные системыLinuxКак сохранить вывод терминала в файл в Linux

Как сохранить вывод терминала в файл в Linux

1. Помощь! Fbgrab не работает; изображение просто черное или пустое.

работает под номером командная строка терминала . Сюда входят как массивные программы, такие как веб-браузеры, так и даже простые, такие как текстовые редакторы. Таким образом, умение правильно использовать терминал является важным шагом, если вы хотите понять, как работает операционная система.

При этом при работе с терминалом Linux вы можете сохранить вывод команды в файл. Этот файл можно использовать в качестве информации для другой операции или просто для регистрации активности терминала. В этой статье рассказывается о пяти способах сохранения вывода терминала в файл.

Читайте также: Как использовать команду dd в Linux

1. Используйте определенные терминалы

Первый способ справиться с этой проблемой — использовать терминал, поддерживающий сохранение вывода в файл. Например, терминал Консоль , поставляемый со стандартной установкой KDE, включает возможность записи вывода в файл.

Для этого нажмите кнопку «Файл» в строке меню и выберите «Сохранить вывод как…»

1. Используйте определенные терминалы

ется диалоговое окно, в котором вы сможете сохранить вывод терминала. Отсюда вы можете выбрать, где сохранить файл.

Вы также можете сохранить вывод команды в терминале GNOME. Просто щелкните правой кнопкой мыши терминал и нажмите «Копировать вывод как HTML». После этого текст терминала будет загружен в буфер обмена. Оттуда вы можете вставить его в любой текстовый редактор.

Выходной файл терминала 06 Выходной файл копирования Gnome Html

Читайте также: Как использовать команду Rm в Linux

2. Перенаправление вывода

Другой способ справиться с этой проблемой — использовать встроенные операторы оболочки UNIX . Это функции по умолчанию в Linux, которые могут перенаправить текстовый вывод программы в файл. Есть три оператора, которые могут это сделать:

  • Оператор >либо создаст, либо заменит содержимое файла выходными данными вашей программы. Это полезно, если вы хотите сохранить и просмотреть текущий результат вашей программы в один и тот же файл.
  • Оператор >>также создаст файл с выводом вашей программы. Однако этот оператор только добавит выходные данные, а не заменит их. Это полезно, если вы хотите постоянно сохранять результаты работы вашей программы в один файл.
  • Наконец, оператор 2> — это оператор особого типа, который выводит ошибки, о которых будет сообщаться обратно. Это очень полезно во время отладки, так как показывает проблему, с которой столкнулась программа перед сбоем.
Пример перенаправления файла вывода терминала 07

Зная это, вы можете использовать эти операторы, добавляя их в конец вашей программы. Рассмотрим следующий пример:

echo "maketecheasier" > hello.txt

Я поручил программе echoвывести слово «maketecheasier», затем добавил оператор >и имя файла. Это предписы

2. Перенаправление вывода

дные данные в файл «hello.txt», а не выводить их на экран.

Выходной файл терминала 08 Hello Txt

3. Футболка

Помимо перенаправления вывода, вы также можете сохранить вывод команды терминала с помощью программы под названием tee. Это программа GNU, которая позволяет вам читать и записывать данные со стандартного ввода. Используйте эту программу с UNIX-каналы , чтобы записать вывод команды в файл.

Рассмотрим следующий пример:

echo "maketecheasier" | tee hello.txt
Пример выходного файла терминала 09 Tee

Здесь вместо использования перенаправления вывода я направил (|) вывод на tee.

Примечание. Канал принимает выходные данные одной программы и передает их на вход другой. Это позволяет вам объединить несколько программ, если все они используют стандартные входы и выходы.

Читайте также: Как исправить проблему «Не могу ввести терминал в Linux»

4. Скрипт

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

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

Чтобы использовать его, выполните следующую команду:

script filename.txt
Выходной файл терминала 11. Пример сценария запуска

Это запустит среду сценариев, в которой вы сможете просто запускать команды. Однако следует отметить одну важную вещь: сценарий фиксирует все, что вы делаете в этом сеансе. Рассмотрим следующий пример:

Script started on 2022-03-27 18:02:29+08:00 [TERM="rxvt-unicode-256color" TTY="/dev/pts/2" COLUMNS="77" LINES="22"]
[?2004h[[1;31m balaraw:[1;35m~ [0m<

3. Футболка

>ls [?2004l [0m[01;34mDesktop[0m [01;34mDownloads[0m [01;34mmail[0m [01;34mNews[0m [01;34mpods[0m [01;34mdocuments[0m [00;32mhello.txt[0m [01;34mMail[0m [01;34mpics[0m [01;34mtmp[0m [01;34mvids[0m [?2004h[[1;31m balaraw:[1;35m~ [0m]$ exit [?2004l exit   Script done on 2022-03-27 18:03:19+08:00 [COMMAND_EXIT_CODE="0"]

Скрипт включает в себя все нажатия клавиш и управляющие символы. В моем случае это были все «невидимые» клавиши, которые я нажимал, включая нажатия клавиш Tabи Backspace.

Завершив сеанс, введите exit. Это завершит работу программы Script и запишет весь журнал в указанный вами файл.

Выходной файл терминала 12 Script Cat

Читайте также: Как использовать команду lp в Linux для печати файлов из терминала

5. Захват терминала фреймбуфера

Наконец, вы также можете получить выходные данные терминала, вытащив из Фреймбуфер Linux . Это

4. Скрипт

работаете непосредственно с телетайпом и хотите записать вывод программы.

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

cat /dev/fb0 > capture.raw
Выходной файл терминала 13. Захват кадрового буфера Raw

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

Таким образом, один из способов справиться с этой проблемой — использовать стороннюю программу, например fbgrab . Это позволит получить текущий экран телетайпа из устройства кадрового буфера и сохранить его в файл PPM или PNG.

Установка fbgrab также относительно проста. В дистрибутивах на основе Debian и Ubuntu вы можете использовать apt:

sudo apt install fbgrab

Для Arch Linux запустите pacman:

sudo pacman -S fbgrab
Выходной файл терминала 14. Установка Fbcat

Использование fbgrab для захвата вывода терминала

После установки перейдите к телетайпу, нажав Control+ Shift+ Alt+ F3, затем запустите либо fbcat, либо fbgrab.

Fbcat — более простая программа, которая захватывает текущий экран кадрового буфера и сохраняет его в изображение PPM. Это низкоуровневый формат изображения RAW, который можно загрузить в редактор изображений для преобразования в PNG. Fbcat в первую очередь полезен, если вы пытаетесь захватить изображение с меньшей разрядностью, для правильного захвата которого требуется формат необработанного изображения.

Чтобы выполнить захват с помощью программы fbcat, выполните следующую команду:

fbcat > capture.ppm
Выходной файл терминала 15. Захват PPM

Это позволит захватить текущий отображаемый экран и сохранить его содержимое в файл capture.ppm.

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

Чтобы выполнить захват с помощью программы fbgrab, выполните следующую команду:

sudo fbgrab -c 3 capture.png

Выходной файл терминала 16. Пример Fbgrab

Это позволит получить третий экран телетайпа и сохранить его в файле capture.png.

Если вы ищете дополнительные руководства по терминалу Linux, ознакомьтесь с разделом отправка письма из командной строки .

Часто задаваемые вопросы

1. Помощь! Fbgrab не

5. Захват терминала фреймбуфера

пустое.

Вероятно, это связано с тем, что fbgrab использует другое устройство фреймбуфера для захвата вывода терминала. Проверьте текущее устройство кадрового буфера, которое использует система, указав папку «/dev».

ls /dev

Оттуда найдите устройство «/dev/fbX». Обычно Linux использует «/dev/fb0» для своего фреймбуфера. Однако, если ваша система использует другой фреймбуфер, например «/dev/fb1», вы можете передать следующую команду, чтобы указать fbgrab вместо этого использовать этот фреймбуфер:

fbgrab -d 1 capture.png

2. Можно ли получить содержимое файла, который я написал, в качестве входных данных для программы?

Да! Помимо трех операторов, рассмотренных выше, вы также можете использовать оператор <для извлечения данных из файла. Тогда оболочка будет воспринимать это как входные данные для программы.

Таким образом также устраняется необходимость полагаться на другие программы для печати текста за вас. Рассмотрим следующие примеры:

[1] cat test.txt | program
[2] program < test.txt
  • Первый пример вызывает программу cat для загрузки текста, затем загружает оператор канала с выводом cat и передает его в вашу программу.
  • С другой стороны, второй пример немедленно вызывает вашу программу, затем выбирает оператор <, который обрабатывает следующий аргумент в качестве входных данных.

3. Есть ли способ заставить скрипт захватывать только вывод команды?

Да, можно создать сценарий только для одной команды. Это очень полезно при устранении неполадок, когда вы просто хотите записать выходные данные одной программы. Сделайте это, выполнив следующую команду:

script -c "your-command" test.txt

Флаг -c указывает программе-скрипту запускать только программу: ваша-команда. Затем он запишет свои выходные данные в текстовый файл с именем test.txt.

Изображение предоставлено: Unsplash

Использование fbgrab для захвата вывода терминала

Часто задаваемые вопросы

2. Можно ли получить содержимое файла, который я написал, в качестве входных данных для программы?

3. Есть ли способ заставить скрипт захватывать только вывод команды?

ПОХОЖИЕ СТАТЬИ

Популярные записи