Копирование буфера прокрутки экрана GNU в файл (расширенная печатная копия)

190

Как я могу легко скопировать буфер прокрутки экрана GNU в файл? То есть более мощная версия команды 'hardcopy'?

На экране GNU я могу использовать « Ctrl+ A Esc» для входа в буфер обратной прокрутки. Затем я мог бы отметить весь буфер и использовать « Ctrl+ A Ctrl+ ]», чтобы вставить его в буфер Emacs , таким образом сохранив его в файл.

Однако это утомительно. Есть ли команда Screen, которая просто скопирует буфер обратной прокрутки в файл, как «печатная копия» для видимой части экрана?

Питер Мортенсен
источник

Ответы:

292

Чтобы записать все содержимое буфера прокрутки в файл, введите

Ctrl+ Aи : перейти в командный режим, затем

hardcopy -h <filename>

В более старых версиях screen, если вы просто это делаете hardcopy -h, он просто записывает в файл -h. Это было исправлено в версии 4.2.0, поэтому hardcopy -hзаписывается туда, hardcopy.Nгде Nнаходится текущий номер окна.

Билл
источник
1
Обратите внимание, что файл сохраняется в домашнем каталоге - по крайней мере, для меня. Спасибо за ответ, кстати!
Ritesh
3
@allrite: сохраняется в $ PWD (если вы не указываете полный путь), особого поведения нет.
Pushpendre
10
Да, но он сохраняется в экране $ PWD, с которого вы начали . Не в $ PWD сеанса экрана.
seumasmac
7
Обратите внимание, что если у вас длинный буфер обратной прокрутки и его мало, сохраненный файл может оказаться пустым, потому что первые десятки или сотни строк пусты, а содержимое находится в конце.
Терри Браун
3
Еще одно замечание о месте, где сохраняется печатная копия: если вы перейдете в каталог, а затем используете его screen -rдля повторного подключения к существующему сеансу, бумажная копия не будет сохранена в активном каталоге на экране или в том, в котором вы были до использования screen -r. Я думаю, что он сохраняется в каталоге, в котором вы были, когда впервые начали сеанс экрана. Вы можете изменить это с помощью команды hardcopydir .
Маттиас Фрипп
25

Нажмите Ctrl+ A : bufferfile /tmp/somefile.txt ENTER , а затем Ctrl+A >

Это запишет текущее содержимое буфера в указанный файл.

Рошан
источник
Я пробовал это, и "ctrl-a>" говорит: "Ничего не произошло". На первом шаге говорилось: «Bufferfile теперь '/tmp/foo.txt'», но, похоже, даже не создает этот файл.
1
Вы уверены, что скопировали что-то в экранный буфер с помощью Ctrl + A [? Похоже, ваш буфер пуст - он не копирует весь буфер прокрутки, а только ту часть, которую вы выбрали с помощью Ctrl + A [
Рошан
2
Ах, я искал ярлык для копирования всего буфера без использования ctrl-a [
12

TL; DR: ^A:writebuf <filename>

OP, похоже, хочет способ использовать выбранную часть буфера, которую вы получаете при выполнении ^ A [, выбирая текст с использованием пробела в качестве начала и конца, а затем вместо использования ^ A] для вставки сохраните полученную выбранную часть из буфера в файл.

Это сработало:

^A:writebuf <filename>

Примечание: одна буква f в writebuf

Кевин Маллет
источник
1
Нет нет. OP хочет сохранить ВЕСЬ буфер, а не только выбранную часть. - OP
2
Крысы! Сильно
упустил
4
Этот пост все еще полезен. Отличная работа.
Justin E
1
Я обнаружил, что для выполнения этой работы на версии экрана для MacOSX мне пришлось использовать абсолютный путь (например: /Users/user1/path/to/file.txt)
jhrf
6

Попробуйте hardcopy -hвключить весь буфер.

Хорхе Гутьеррес
источник
2
Это просто делает распечатку в файле ~ / -h
2
@barrycarter: Возможно, это изменилось в более поздних версиях. Начиная с экрана 4.03.01, hardcopy -hзаписывает hardcopy.N, где N- номер текущего окна.
Кейт Томпсон
4

Это сработало для меня:

Войдите в режим редактирования ( ~) и введите:

:hardcopy -h buff_file

Он создал огромный файл, из которого 98% были пустыми, но мои журналы полностью присутствовали в оставшихся 2%.

freeninza
источник
-2

Ctrl+ A, :и введите команду log on.

Или установите его по умолчанию в вашем файле .screenrc как deflog on.

Brianray
источник
2
Я думаю, что это просто начинает регистрировать все после того, как я запустил эту команду. Я не хочу регистрировать все (слишком многословно). Я просто хочу сохранить буфер прокрутки как файл.
-3

Do Ctrl+ A, H.

Это сохраняет текущий экран в жесткий файл копирование, например, hardcopy.0 на экран 0. Это , как представляется, более быстрым способом , чем идти Ctrl+ A, :и набрав печатную копию команды.

Джефф
источник
3
К сожалению, при этом сохраняется только ВИДИМАЯ часть экрана, а не буфер обратной прокрутки.