2015-05-01 2 views
2

Я хочу знать, знает ли кто-нибудь способ сбросить или скопировать всю массу видимых сообщений в окне xterm на linux. Очень важно то, что я не хочу знать, как отправить команду и записать ее вывод для потоков 1 и 2, а также ввод, как это мне хорошо известно.xterm dump полного содержимого прокручиваемого окна

Я могу объяснить, для чего это необходимо. Вы что-то делаете и не ожидаете каких-либо осложнений, кроме того, что у вас есть страницы msg als err msg или normal output. Чтобы иметь возможность увидеть позже, вы сможете получить их в файле и до тех пор, пока вы сможете прокручивать все это назад и вперед с помощью мыши, конечно, есть данные где-то. Но время может быть не для прокрутки и скриншота и прокрутки ....

Я был бы рад помочь мне в таких случаях, и было бы хорошо, если бы у вас был полный просмотр, включая все ваши собственные набрав и все сообщения msg в том же порядке, что и при просмотре.

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

+0

Кроме того, этот вопрос не в тему, вы должны, вероятно, спросить его о суперпользователе. – mata

+0

Может быть возможно использование 'printerCommand' - похоже на [this] (http://unix.stackexchange.com/questions/45993/extra-characters-in-xterm-printercommand-output) или [это] (http://lukas.zapletalovi.com/2013/07/hidden-gems-of-xterm.html#search-history) – mata

ответ

4

Существует контрольная последовательность, которую я забыл. Этот вопрос напомнил мне. В XTerm Control Sequences, отмечается «печать всех страниц»:

CSI ? Pm i 
     Media Copy (MC, DEC-specific). 
     Ps = 1 -> Print line containing cursor. 
     Ps = 4 -> Turn off autoprint mode. 
     Ps = 5 -> Turn on autoprint mode. 
     Ps = 1 0 -> Print composed display, ignores DECPEX. 
     Ps = 1 1 -> Print all pages. 

, который датируется 1999 г. (patch #119), так что вы, вероятно, иметь его в XTerm. Вы можете сделать это в качестве команды оболочки, как это:

printf '\033[?11i' 

Комментарий упоминает страницу Hidden gems of xterm, который использует соответствующий действиеprint-everything (что-то, что может быть выполнено с помощью translations ресурса). Конечно, это в manual page. Этот же комментарий указывает на Extra characters in XTerm printerCommand output, в котором упоминается ресурс printAttributes. По умолчанию управляющие последовательности для принтера указывают xterm на отправку дополнительных управляющих символов (для восстановления атрибутов видео). Ресурс может быть изменен (установлен на 0), чтобы подавить это. Это еще больше (patch #74).

Без этого — Предположительно один может построить приложение, которое используется протокол X SendEvent построить ряд событий, которые будут интерпретированы как XTERM действий для прокрутки назад, выделите текст и скопировать его кусок-на-кусок с помощью буфер обмена. Вы даже можете записать его в Perl (есть модуль для X protocol). Но серьезно, нет.

Если вы хотите, чтобы захватить текст, который был написан на XTerm, вы можете сделать это путем подготовки перед тем текст необходима различными методами (см manual):

  • включить функцию Xterm лесозаготовительной (не для удобства, потому что он генерирует имя файла). Это можно активировать, используя запись меню «Log to File (logging)» «».
  • использовать управляющие последовательности принтера, чтобы написать строки, как они написаны (опять же, не так дружелюбны, хотя и есть пункт меню, чтобы включить его и выключать, «Перенаправить на принтер (печать REDIR)»)
  • использовать script для захвата все выход на терминал. Я использую это, потому что он работает с любым терминалом в любой POSIX-подобной системе (даже Cygwin).

Каждый из этих методов создает файл, содержащий escape/control sequence, который требует фильтрации. Гипотетическая программа, использующая SendEvent, в принципе могла бы устранить это.

+0

Если вы запустили 'printf '\ 033 [? 11i'', где терминал получает« печатный »? В руководстве, похоже, подразумевается, что оно записано в файл, но я не знаю, какой из них. – dimo414

+0

См. Ресурс 'printerCommand', который позволяет вам писать через канал в команду оболочки. –

+0

Смущенный, поскольку я должен признать это, я все еще боюсь, что не знаю, что вы имеете в виду. Я нашел [этот вопрос] (http://unix.stackexchange.com/q/45993/19157), который привел меня к [нескольким] (https://wiki.archlinux.org/index.php/X_resources) [статьи] (http://kb.mit.edu/confluence/pages/viewpage.action?pageId=3907291) о [X resources] (https://en.wikipedia.org/wiki/X_resources), но при создании 'printerCommand' строка в '~/.Xresources' и вызов' xrdb', похоже, не захватывает какой-либо вывод в файл, хотя 'xrdb -query' отображает то, что я ожидаю. – dimo414