如何将会话名称捕获到 tmux 变量中?

如何将会话名称捕获到 tmux 变量中?

我想根据我的会话名称的值执行外部命令。我知道会给:display-message '#S'我会话名称,但我想让该名称自动发送给我的外部命令。

我已尝试过:run-shell "my-command #S",但是没有用,因为“#S”没有被替换。

有没有什么类似的东西:MY_VAR=$(display-message -p "#S")我可以用?

答案1

由于你可以运行几乎所有tmux命令直接来自 shell(而不仅仅是来自tmux :提示符下,您可以这样做:

:run-shell "my-command \"$(tmux display -p '#S')\""

当然这也可以通过绑定来完成:

:bind C run-shell "my-command \"$(tmux display -p '#S')\""

答案2

如果你正在运行 tmux 1.8(你可以使用 检查tmux -V),你可以简单地使用:run-shell "my-command '#S'"。但这在 1.6 中不起作用。

答案3

您可以使用 sed + xargs 将结果作为参数传递给所需的命令,例如:

tmux bind-key "C" run-shell "tmux display-message -p '#{S}' | sed 's/.*/\"&\"/' | xargs my_command"

相关内容