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

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

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

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


person Community    schedule 26.01.2011    source источник


Ответы (7)


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

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

hardcopy -h <filename>

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

person Bill    schedule 06.07.2011
comment
Обратите внимание, что файл сохраняется в домашнем каталоге - по крайней мере, для меня. Спасибо за ответ, кстати! - person Ritesh; 15.11.2013
comment
@allrite: сохраняется в $ PWD (если вы не указываете полный путь), особого поведения нет. - person Pushpendre; 23.03.2014
comment
Да, но он сохраняется в $ PWD, где вы начали. Нет в $ PWD сеанса экрана. - person seumasmac; 04.12.2014
comment
Обратите внимание: если у вас длинный буфер обратной прокрутки и его мало, сохраненный файл может оказаться пустым, потому что первые десятки или сотни строк пусты, а содержимое находится в конце. - person Terry Brown; 16.04.2015
comment
Еще одно замечание о месте, где сохраняется печатная копия: если вы перейдете в каталог, а затем используете screen -r для повторного подключения к существующему сеансу, печатная копия не будет сохранена в активном каталоге на экране или в том, в котором вы были до использования screen -r. Я думаю, что он сохраняется в каталоге, в котором вы были, когда впервые начали сеанс экрана. Вы можете изменить это с помощью команды hardcopydir. - person Matthias Fripp; 30.07.2015
comment
Просто комментарий - не все, что выполняется внутри экрана, является оболочкой (или имеет PWD). Screen поддерживает последовательные консоли, где локальный каталог не имеет смысла, поэтому возможно, что задействован только один каталог - тот, в котором запущен процесс screen. - person davidA; 14.03.2017
comment
Если вы не уверены в каталоге, создайте новое окно с помощью Ctrl + A + C. Он открывается в каталоге, в котором сохранен файл. - person Seppo Enarvi; 06.07.2017
comment
Обратите внимание, что в отличие от методов, использующих буфер копирования, команда hardcopy выгружает обратную прокрутку точно так, как она появляется, включая разрыв длинных строк для текущей ширины терминала. Это может быть то, что вы хотите, а может и не быть. - person mhsmith; 14.03.2018
comment
В дополнение к совету от @SeppoEnarvi, работу экрана можно определить с помощью старой доброй команды 'pwd для родительской оболочки: Ctrl + a: !pwd. - person Murphy's Prophet; 07.01.2019
comment
Это удаляет цветовые коды ANSI перед сохранением в файл. Есть ли способ их сохранить? - person user643011; 15.04.2019

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

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

person Roshan    schedule 05.05.2011
comment
Я пробовал это, и ctrl-a ›говорит, что ничего не произошло. Первый шаг действительно сказал, что Bufferfile теперь называется «/tmp/foo.txt», но, похоже, даже не создает этот файл. - person ; 05.05.2011
comment
Вы уверены, что скопировали что-то в экранный буфер с помощью Ctrl + A [? Похоже, ваш буфер пуст - он не будет копировать весь буфер прокрутки, а только ту часть, которую вы выбрали с помощью Ctrl + A [ - person Roshan; 06.05.2011
comment
Ах, я искал ярлык для копирования всего буфера без использования ctrl-a [ - person ; 07.05.2011

TL;DR: ^A:writebuf <filename>

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

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

^A:writebuf <filename>

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

person Kevin Mullet    schedule 14.04.2015
comment
Нет нет. OP хочет сохранить ВЕСЬ буфер, а не только выбранную часть. - ОП - person ; 15.04.2015
comment
Крысы! Пропустил это так сильно - person Kevin Mullet; 15.04.2015
comment
Этот пост до сих пор полезен. Молодец. - person Justin E; 14.04.2016
comment
Я обнаружил, что для работы с версией экрана для MacOSX мне пришлось использовать абсолютный путь (например: /Users/user1/path/to/file.txt) - person jhrf; 19.05.2016

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

person Jorge Gutierrez    schedule 02.06.2011
comment
Это просто делает распечатку в файле ~ / -h - person ; 03.06.2011
comment
@barrycarter: Возможно, это изменилось в более поздних версиях. Начиная с экрана 4.03.01, hardcopy -h записывает в hardcopy.N, где N - номер текущего окна. - person Keith Thompson; 30.11.2016

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

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

:hardcopy -h buff_file

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

person freeninza    schedule 21.03.2012

Ctrl + A, : и введите команду "войти в систему".

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

person brianray    schedule 10.02.2011
comment
Я думаю, что это просто начинает регистрировать все после того, как я запустил эту команду. Я не хочу регистрировать все (слишком многословно). Я просто хочу сохранить буфер обратной прокрутки как файл. - person ; 24.02.2011

Сделайте Ctrl + A, H.

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

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