Сохранить текущий терминал прокрутки в файл?

24

Я искал ответ на это и не нашел ничего, что заставляет меня думать, что это невозможно, но ...

Можно ли сохранить текущий буфер прокрутки Gnome Terminal в файл?

Я знаю, что могу сделать что-то вроде command > output.txtперенаправления всех выходных данных в файл или command | tee output.txtразделить выходные данные в терминал, а также в файл. То, что я пытаюсь сделать, это захватить это после факта. Я хотел бы сохранить содержимое прокрутки текущей вкладки терминала в файл.

Карл Уилбур
источник
kittyодна терминальная программа, которая может это делать, к сожалению, шрифты выглядят ужасно (без субпиксельного рендеринга)
jberryman
Спасибо, @jberryman. Хорошо знать.
Карл Уилбур

Ответы:

37

После небольшой игры я обнаружил, что вы можете:

  • triple-click последняя строка
  • хит shift + home
  • shift + click первая строка
  • копировать с помощью ctrl + shift + c(или right-click> «Копировать»)

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

xsel -o > out.txt

(Для установки xselсделать sudo apt-get install xsel)

Карл Уилбур
источник
5
Выделение можно сделать проще: Edit-> Select All.
egmont
3
Это отличный ответ, потому что он дает вам понять, что вы можете использовать triple-click the last lineи shift + home or the scrollbarперейти к точному местоположению, которое вы хотите для начала вывода.
шеф-повар фараон
2
Предупреждение: не пытайтесь сделать это с большим откликом (много мегабайт), так как это может повредить X (случилось со мной).
Кевин Кокс
При большом количестве мегабайт следует ожидать медленной обработки. Будьте терпеливы и дайте компьютеру поработать. «Дайте ему секунду! Он полетит в космос! Можете ли вы дать ему секунду, чтобы вернуться из космоса ?!»
Карл Уилбур
Я просто попытался скопировать большой прокрутку (вывод rsync из резервной копии пары дисков по 2 ТБ за ночь), используя метод Edit-> Select Allдля захвата вывода. Прошло 25-30 минут, а терминал Gnome все еще заблокирован. Используя Byobu, я смог запустить, topчтобы увидеть, что Gnome Terminal все еще работает (увеличивает время процессора); в настоящее время используется более 4,176 г оперативной памяти и медленно поднимается. Так что, да, с очень большим прокруткой, это займет некоторое время. X все еще работает (и Chrome, YouTube, Nautilus, Byobu и т. Д.), Но Gnome Terminal понадобится минута. Я должен был спланировать лучше.
Карл Уилбур
2

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

Например,

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit
Script done, file is typescript
xieerqi@eagle:~$ cat typescript 
Script started on 2015年10月27日 星期二 11时37分55秒

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit

Script done on 2015年10月27日 星期二 11时38分18秒

Однако в файле машинописи могут быть управляющие символы, например, из команды ls, поэтому используйте cat typescript | col -b > outputfile.txtкоманду для перенаправления чистого вывода в файл.

Сергей Колодяжный
источник
5
Спасибо, но это то, что нужно сделать, прежде чем вы соберете ценную информацию в своем терминале. Мне нужно было постфактумное решение.
Карл Уилбур
1
Это очень хорошо знать, хотя. Я сделаю это в будущем.
Карл Уилбур
@KarlWilbur :) Я уверен, что вы найдете это полезным. Я часто использую его для домашней работы по программированию. На самом деле есть способ выкинуть то, что на экране в консолях TTY, но gnome-терминал немного сложнее
Сергей Колодяжный,
@SergiyKolodyazhnyy Я пытаюсь реализовать это в своем скрипте Python, но я не могу выйти из скрипта, выполнив "os.system (" exit "). Однако он выходит из терминала и сохраняет вывод в файл.
mtkilic
@mtkilic Команда scriptзапускает отдельный процесс, поэтому ваш скрипт на python, являющийся родителем подпроцесса, ожидает выхода дочернего элемента. Он предназначен больше для интерактивных сессий, но если вы хотите записать сессию в интерпретаторе Python, сначала запустите scriptкоманду, а затем запустите интерпретатор. Команда также должна иметь -cфлаг, чтобы вы могли вызывать, script -c pythonно дважды проверьте с man script.
Сергей Колодяжный,