You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tmux使用save-buffer保存缓冲区时如何在文件名中添加当前日期时间?

Tmux save-buffer 文件名追加日期时间失效解决方案

问题根源

tmux 的 #() 命令替换、#{} 格式变量仅在格式字符串类配置项的上下文(如 pane-border-format、status-format 等)中会被自动解析,直接作为普通命令参数传递给 save-buffer 时不会触发展开,因此你写的日期部分返回空值。

解决方案1:直接用run-shell包裹命令(无需额外存变量)

run-shell 执行时会先自动解析所有tmux格式变量和替换,再将命令丢给shell执行,是最简便的实现方式,示例绑定快捷键命令如下:

bind-key s run-shell "mkdir -p $HOME/logs/tmux; capture-pane -S - -E -; save-buffer \"$HOME/logs/tmux/tmux-saved.#{pane_start_command}-$(date +'%b.%d.%Y-%H:%M:%S').log\"; delete-buffer"

这里直接用shell内置的$()替换日期,比tmux的#()兼容性更好。

解决方案2:将日期存到tmux变量后调用

如果需要单独存储日期变量复用,可以通过set-environment实现将shell命令输出存入tmux变量:

  1. 存储变量命令(默认存在当前会话,加-g参数可以存为全局变量):
    tmux set-environment TMUX_SAVE_DATE "$(date +'%b.%d.%Y-%H:%M:%S')"
  2. 后续使用时直接调用$TMUX_SAVE_DATE即可,完整绑定示例:
    bind-key C-s run-shell '
      mkdir -p $HOME/logs/tmux
      tmux capture-pane -S - -E -
      tmux set-environment TMUX_SAVE_DATE "$(date +\"%b.%d.%Y-%H:%M:%S\")"
      tmux save-buffer "$HOME/logs/tmux/tmux-saved.#{pane_start_command}-$TMUX_SAVE_DATE.log"
      tmux delete-buffer
    '
    

注意事项

  • 执行前确保$HOME/logs/tmux目录存在,示例中已经加了mkdir -p自动创建目录的逻辑,无需手动处理
  • 如果#{pane_start_command}包含空格、特殊字符,参数外层的双引号可以避免文件名被截断

内容的提问来源于stack exchange,提问作者Csaba Balogh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:45:02