Как я могу записать все прокрутки в сеансе tmux в файл?
capture-panel
может захватить текущий экран, но не весь прокрутку.
Как я могу записать все прокрутки в сеансе tmux в файл?
capture-panel
может захватить текущий экран, но не весь прокрутку.
Ответы:
Это зависит от значения, history-limit
которое вы установили в вашем .tmux.conf
- по умолчанию 2000; если вы хотите захватить больше, вам нужно будет явно указать количество строк.
Чтобы захватить весь прокрутку, войдите в режим копирования, выберите весь прокрутку и вставьте ее в буфер, затем вставьте в файл.
То, как вы это сделаете, будет зависеть от того, mode-keys
какой вариант вы предпочитаете: vi или emacs. man tmux
имеет полезную таблицу с описанием соответствующих ключей.
У меня есть следующее, .tmux.conf
чтобы упростить это:
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
Процесс захвата полного прокрутки затем:
PrefixEsc : войти в режим копирования
v : начать визуальный отбор (при условии, что вы уже внизу экрана)
gg : захватить все в прокрутке
y : вытащить его в буфер
Prefixc : открыть другое окно tmux
vim scrollback.txt
i : войти в режим вставки в vim
Prefixp : вставить в файл
Здесь также есть ответ, описывающий, как скопировать буфер во временный файл, используяxsel
который может быть полезным.
:set paste
vim, vim будет игнорировать добавление автоматических отступов или любых сочетаний клавиш на основе вставки.
.tmux.conf
...
Для тех, кто ищет простой ответ, просто используйте prefix+ :, затем введите capture-pane -S -3000
+ return(замените тем 3000
количеством строк, которое вы хотите сохранить.) Это скопирует эти строки в буфер.
Затем, чтобы сохранить буфер в файл, просто используйте prefix+ еще :раз и введите save-buffer filename.txt
+ return, заменив тем, filename
что вы хотите.
(По умолчанию prefixэто ctrl + b.)
save-buffer filename.txt
кажется, сохранить файл в /
, а не в pwd
(текущий каталог). Вместо этого я
В tmux 1.5 capture-pane
команда принимает -S
и -E
указывает начальную и конечную строки захвата; отрицательные значения могут быть использованы для указания строк из истории. Как только у вас есть данные в буфере, вы можете сохранить их с помощью save-buffer
.
Вот пример привязки (подходит для .tmux.conf
), которая оборачивает все это подсказкой для имени файла:
bind-key P command-prompt -p 'save history to filename:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'
Это захватывает (до) 32768 строк истории плюс отображаемые в данный момент строки. Начиная с tmux 1.6, вы можете использовать числа вплоть до INT_MIN, если ваша панель имеет историю, которая глубже 32Ки строк (обычно до 2Ги строк). Начиная с tmux 2.0, вы можете использовать capture-pane -S -
для обозначения «начало в начале истории» (то есть без большого, жестко заданного отрицательного числа).
Примечание. Число строк в сохраненном файле не всегда будет равно пределу истории панели плюс ее высота.
Когда буфер истории панели заполнен, tmux отбрасывает 10% самых старых строк вместо одной строки. Это означает, что эффективная глубина истории панели может составлять до 90% от настроенного предела.
tmux server-info | head -1
чтобы увидеть свою версию. tmux -V
работает в tmux * 1.4 и позже.
[PrefixKey] :
чтобы перейти к командной строке tmux, а затем вставьте всю строку, тогда вы просто сделаете a, [Prefix] P
это заглавная буква P, и вы готовы идти.
У меня были стандартные привязки клавиш, которые выглядели немного иначе, чем в ответе @ jasonwryan, и я ничего не изменил в конфигурации.
Ниже рецепт, который работал для меня. Возможно, вы найдете это полезным, если вы не хотите вносить какие-либо изменения в конфигурацию tmux и просто хотите быстро скопировать часть прокрутки.
Prefix== Ctrl+bв моем tmux (tmux 1.6, debian 7).
Если вам нужно что-то, что вы можете запустить из командной строки (вместо того, чтобы использовать префиксные ключи tmux), попробуйте выполнить:
tmux capture-pane -pS -1000000
Если вы запустите его и он, похоже, ничего не сделает, это потому, что он выводит именно то, что было на вашем экране, поэтому он выглядит так же.
Конечно, вы также можете передать его в файл:
tmux capture-pane -pS -1000000 > file.out
См. tmux
Справочную страницу и найдите capture-pane
другие вещи, которые вы можете сделать (например, захватить escape-последовательности на случай, если вы хотите сохранить цвет, или указать, хотите ли вы, чтобы несколько визуальных линий были соединены, если они не содержат новой строки)
Вот плагин tmux, который позволяет это:
https://github.com/tmux-plugins/tmux-logging
После установки сохраните весь прокрутку с помощью prefix + alt-shift-p
.
Это на самом деле очень просто. Войдите в командный режим, нажав prefix key
затем :
. Тогда сделайте capture-pane -S -<line number you want to dump>
Тогдаsave-buffer <filepath>
Этот файл содержит все выходные данные прокрутки. Вы должны удалить буфер впоследствии из соображений безопасности.
Как я могу записать все прокрутки в сеансе tmux в файл?
Я использую это в моем ~ / .tmux.conf , и теперь, когда я выхожу из своей запущенной оболочки, выходные данные панели сохраняются в уникальный файл журнала:
set -g remain-on-exit
set-hook pane-died 'capture-pane -S - -E - ; save-buffer "$HOME/logs/tmux/tmux-saved.#{host_short}-#{session_id}:#{window_id}:#{pane_id}-#{pane_pid}-#{client_activity}.log"; delete-buffer; kill-pane'