Linux сохранение вывода терминала

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

Когда вы работаете в терминале, весь вывод команд, естественно, вы видите в реальном времени прямо в окне терминала. Но бывают случаи когда вывод нужно сохранить, дабы поработать с ним позже (проанализировать его, сравнить, и т.п). Так вот, работая в Bash у вас есть возможность перенаправлять отображаемую информацию с окна терминала в текстовый файл. Рассмотрим как это делается.

Вариант 1: только перенаправляем вывод терминала в файл

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

Оператор > сохранит результат работы команды в указанный файл и, если в нем уже будет находиться какая-либо информация, перезапишет ее.

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

Рассмотрим на примере команды ls, которая отображает список файлов и папок в указанной директории. Давайте запишем результат ее работы в текстовый файл. Нам нужно написать команду, поставить оператор и указать путь к файлу:

Теперь посмотрим, все ли сработало. Для этого можно воспользоваться любым текстовым редактором, какой у вас есть. Также это можно сделать прямо в терминале при помощи команды cat:

Помните, что “>” перезапишет все данные, которые были до этого в файле, поэтому, если вам нужно дописать что-либо в файл используйте оператор “>>

Допустим, что после того, как мы перенаправили вывод команды ls в файл “пример” мы решили узнать версию ядра системы и также сохранить вывод в тот же файл. Чтобы узнать версию ядра воспользуемся командой uname и параметром -a, затем говорим Bash как и куда нужно сохранить результат ее выполнения:

uname -a >> /home/ruslan/пример

Как видим, у нас сохранились результаты работы и ls, и uname.

Вариант 2: перенаправляем вывод в файл и отображаем его на экране

Не всем и не всегда удобно пользоваться операторами > и >>, так как все же лучше когда волнение команд можно наблюдать в реальном времени в окне терминала. В таком случае мы можем воспользоваться командой tee, которая и отобразит выполнение команд на экране, и сохранит его в файл. Синтаксис ее такой:

Этот вариант подобен оператору > из предыдущего пункта, то есть при записи в файл, все старые данные будут удалены. Если вам нужно дописать в файл, в конструкцию нужно добавить параметр -a:

команда | tee -a /путь/к/файлу

В Bash есть еще несколько операторов и команд, выполняющих идентичные задачи, их часто используют во время написания различных скриптов, но для обычного пользователя, которому нужно сохранить вывод команды чтобы запостить его на форуме, вполне достаточно и этих вариантов. Надеюсь, что помог вам, до новых постов!

Читайте также:  Apache сервер установить linux

Источник

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

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

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

Утилита сценария в основном сохраняет все, что выводится на терминал во время сессии сценария. Он поставляется предустановленным в большинстве систем Linux. Вы можете получить более подробную информацию о команде script с помощью man.

man script

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

script out.txt

Все команды и их терминальные выводы после ввода вышеприведенной команды будут сохранены в файле out.txt. Если вы не укажете никакого имени файла после команды script, то все команды и их терминальные выводы будут сохранены в файле с именем typescript.

Теперь допустим, что после запуска сессии скрипта вы вводите следующую команду и получаете вывод, показанный ниже.

ls -l

Чтобы выйти из сессии сценариев, введите команду exit.

exit

Теперь, если вы просмотрите содержимое файла out.txt, вы увидите команду ls, а также ее вывод.

cat out.txt

Как видите, сохраняются все команды и вывод терминала после вызова команды script, включая команду exit и ее вывод.

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

script -h

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

Похожие записи:

Источник

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

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

Очень часто при работе в терминале возникает необходимость в сохранении результата работы команд (или же какого-либо консольного приложения) в текстовый файл или проще говоря лог. В ОС Linux есть множество способов для реализации этой идеи и в этой статье мы рассмотрим некоторые из них.

stdout_stderr_to_log

Стандартный поток вывода данных (StdOut) — Это вся информация, которая выводится в результате исполнения команды, за исключением ошибок.
Стандартный поток вывода ошибок (StdErr) — Это информация об ошибке, если она была.

Описание

Стандартный поток вывода данных (StdOut) будет перенаправлен в файл и отображаться в терминале не будет. Если файл уже существует, то он будет перезаписан.

Стандартный поток вывода данных (StdOut) будет перенаправлен в файл и отображаться в терминале не будет. Если файл уже существует, то новые данные будут дописаны в конец файла.

Стандартный поток вывода ошибок (StdErr) будет перенаправлен в файл и отображаться в терминале не будет. Если файл уже существует, то он будет перезаписан.

Стандартный поток вывода ошибок (StdErr) будет перенаправлен в файл и отображаться в терминале не будет. Если файл уже существует, то новые данные будут дописаны в конец файла.

Стандартный поток вывода данных (StdOut) И Стандартный поток вывода ошибок (StdErr) будут перенаправлены в файл и отображаться в терминале не будут. Если файл уже существует, то он будет перезаписан.

Стандартный поток вывода данных (StdOut) И Стандартный поток вывода ошибок (StdErr) будут перенаправлены в файл и отображаться в терминале не будут. Если файл уже существует, то новые данные будут дописаны в конец файла.

Читайте также:  Kali linux увеличение мощности

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

команда | tee -a logfile.txt

Стандартный поток вывода данных (StdOut) будет перенаправлен в файл и одновременно будет отображен в терминале. Если файл уже существует, то новые данные будут дописаны в конец файла.

Примеры

Источник

Сохранение вывода команды из терминала Linux в файл

Мы все знаем, что выполнение команды в командной строке Linux приводит к выполнению команды и печати результатов в самом Терминале. Иногда этого немедленного вывода недостаточно, особенно если мы хотим сохранить вывод для последующего использования. К счастью, Linux bash и все операционные системы bash, если на то пошло, оснащены возможностью печати вывода команды в указанный файл.

Сохранение вывода команд в файл

Мы выполним несколько примеров, в которых вывод команд будет сохранен в указанном нами имени файла.

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

[команда] > [/file/location/filename]

Например, я использую команду lscpu (которая отображает системную информацию) и затем выведу ее содержимое в файл с именем systeminf.txt. Этот файл еще не существует в моей системе.

lscpu > /home/user/systeminfo.txt

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

Добавление вывода в уже существующий файл

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

[команда] >> [/file/location/filename]

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

ls >> /home/user/systeminfo.txt

Следующий файл, который раньше содержал только информацию о моей системе, теперь также содержит результат моей команды ls:

Печать вывода на терминале и сохранение его в файл

Вы могли заметить, что команды, о которых мы говорили выше, только сохраняют вывод в файл, не печатая его на Терминале. Если вы хотите просмотреть вывод команды на Терминале, используйте следующий синтаксис:

[команда] | tee [/file/location/filename]

Например, текст, который мы хотим передать эхом на следующем рисунке, теперь будет передан эхом на Терминале, а также распечатан в файл myfile.txt.

echo "print text to file" | tee /home/user/myfile.txt

Если вы хотите добавить вывод команды в уже существующий файл. Пожалуйста, следуйте следующему синтаксису:

[команда] | tee -a [/file/location/filename].

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

echo "some more text" | tee -a /home/sana/myfile.txt

Используйте pipe для сохранения вывода команды в файл.

Похожие записи:

Источник

Save all the terminal output to a file

Many GUI terminal emulators allow to save the scroll buffer, but this is not accessible to commands (leaving aside xdotool and this sort of black art).

4 Answers 4

You can use script . It will basically save everything printed on the terminal in that script session.

script makes a typescript of everything printed on your terminal. It is useful for students who need a hardcopy record of an interactive session as proof of an assignment, as the typescript file can be printed out later with lpr(1). 

You can start a script session by just typing script in the terminal, all the subsequent commands and their outputs will all be saved in a file named typescript in the current directory. You can save the result to a different file too by just starting script like:

Читайте также:  Arduino mega driver linux

To logout of the script session (stop saving the contents), just type exit .

$ script output.txt Script started, file is output.txt $ ls output.txt testfile.txt foo.txt $ exit exit Script done, file is output.txt 
$ cat output.txt Script started on Mon 20 Apr 2015 08:00:14 AM BDT $ ls output.txt testfile.txt foo.txt $ exit exit Script done on Mon 20 Apr 2015 08:00:21 AM BDT 

script also has many options e.g. running quietly -q ( —quiet ) without showing/saving program messages, it can also run a specific command -c ( —command ) rather than a session, it also has many other options. Check man script to get more ideas.

Can it be invoked after the fact? (i.e. At the end of a session) Or does it have to be invoked before the content you want logged?

To export it retroactively, try Terminal menu -> Shell -> Export text as, like here: mactricksandtips.com/2013/04/save-terminals-text-output.html

@Magne you should note in your comment that it is specific to the terminal utility in Mac. gnome-terminal, for one, does not have that menu, so we should assume that other linux terminal windows won’t have it either.

I too faced the same problem and after some search came up with this solution:

Add to your .bash_aliases this:

# Execute "script" command just once smart_script() < # if there's no SCRIPT_LOG_FILE exported yet if [ -z "$SCRIPT_LOG_FILE" ]; then # make folder paths logdirparent=~/Terminal_typescripts logdirraw=raw/$(date +%F) logdir=$logdirparent/$logdirraw logfile=$logdir/$(date +%F_%T).$$.rawlog # if no folder exist - make one if [ ! -d $logdir ]; then mkdir -p $logdir fi export SCRIPT_LOG_FILE=$logfile export SCRIPT_LOG_PARENT_FOLDER=$logdirparent # quiet output if no args are passed if [ ! -z "$1" ]; then script -f $logfile else script -f -q $logfile fi exit fi ># Start logging into new file alias startnewlog='unset SCRIPT_LOG_FILE && smart_script -v' # Manually saves current log file: $ savelog logname savelog() < # make folder path manualdir=$SCRIPT_LOG_PARENT_FOLDER/manual # if no folder exists - make one if [ ! -d $manualdir ]; then mkdir -p $manualdir fi # make log name logname=$logname=$ # add user logname if passed as argument if [ ! -z $1 ]; then logname=$logname'_'$1 fi # make filepaths txtfile=$manualdir/$logname'.txt' rawfile=$manualdir/$logname'.rawlog' # make .rawlog readable and save it to .txt file cat $SCRIPT_LOG_FILE | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > $txtfile # copy corresponding .rawfile cp $SCRIPT_LOG_FILE $rawfile printf 'Saved logs:\n '$txtfile'\n '$rawfile'\n' > 

And to the end of your .bashrc file add this:

After you’ve done this, «script» command will be executed once in every terminal session, logging everything to ~/Terminal_typescripts/raw .

If you want, you can save current session log after the fact (in the end of the session) by typing savelog or savelog logname – this will copy current raw log to ~/Terminal_typescripts/manual and also create readable .txt log in this folder. (If you forget to do so, raw log files will still be in their folder; you’ll just have to find them.) Also you may start recording to a new log file by typing startnewlog .

There will be a lot of junk log files, but you can clean old ones from time to time, so it’s not a big problem.

Источник

Оцените статью
Adblock
detector