tmux 中是否有相當於 GNU Screen 的“log”命令?
當我在給定環境中進行更改時,我大量使用螢幕的“log”命令將會話的輸出記錄到文件中。我搜尋了 tmux 的手冊頁,但找不到等價物。有誰知道 tmux 中的類似功能,還是我必須編寫自己的包裝腳本才能做到這一點?
編輯:我知道允許我記錄會話的“腳本”和其他實用程序。screen 的功能如此有用的原因是能夠定義一個日誌文件變數,該變數使用字元串轉義來唯一標識每個會話。
例如,我有一個 shell 函式,給定一個主機名,它將在新的螢幕視窗中通過 SSH 連接到該主機,並將視窗標題設置為主機名。當我啟動該會話的日誌時,它以視窗標題為前綴。
如果 tmux 中不存在此功能,我將不得不創建一組新的 shell 函式來設置我想要記錄的會話的“腳本”。這並不是很困難,但考慮到螢幕已經完全滿足了我的需要,因此可能不值得付出努力。
讓我看看我是否正確解讀了您的螢幕配置:
- 您使用類似
logfile "%t-screen.log"
(可能在.screenrc
文件中)來配置稍後將啟動的日誌文件的名稱。- 您使用
title <hostname>
(Ca A) screen命令來設置新視窗的標題,或者您
screen -t <hostname> ssh0 <hostname>
可以啟動新的螢幕會話。
- 您使用 Ca H (Ca :log) screen命令將日誌記錄切換到配置的文件。
如果是這樣,那麼幾乎是等效的(需要tmux 1.3+ 以支持
pipe-pane
shell 命令中的 #W;pipe-pane
在tmux 1.0+ 中可用):
- 在配置文件中(例如
.tmux.conf
):bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'"
- 使用
tmux rename-window <hostname>
(Cb ,) 重命名現有視窗,或使用
tmux new-window -n <hostname> 'ssh <hostname>'
啟動新的tmux視窗,或使用
tmux new-session -n <hostname> 'ssh <hostname>'
啟動新的tmux會話。
- 使用 Cb H 切換記錄。
沒有通知日誌已被切換,但如果需要,您可以添加一個:
bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Toggled logging to $HOME/#W-tmux.log'
注意:上面的行顯示為好像它在配置文件中一樣(或者
.tmux.conf
你的source
)。tmux需要同時看到反斜杠和分號;如果您想從 a shell 配置它(例如tmux bind-key …
),那麼您必須適當地轉義或引用這兩個字元,以便將它們完整地傳遞給tmux。當只使用一個綁定時,似乎沒有一種方便的方法來顯示不同的消息來切換打開/關閉(您可能可以使用 裝配一些東西if-shell
,但它可能會很醜陋)。如果兩個綁定是可以接受的,那麼試試這個:bind-key H pipe-pane "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Started logging to $HOME/#W-tmux.log' bind-key h pipe-pane \; display-message 'Ended logging to $HOME/#W-tmux.log'