我想根据我的会话名称的值执行外部命令。我知道会给: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"