使用 tmux 附加 xargs

使用 tmux 附加 xargs

我想创建一个别名,让我可以用 FZF 浏览我的所有 tmux 窗口,然后附加该单个窗口。我目前有:

tmux list-windows -t main -F '#{session_name}:#{window_name}' | fzf | xargs "tmux attach -t"

# In FZF, I select a window named "main:mail".

这会导致错误:

open terminal failed: not a terminal

当我添加时echo,输出的命令看起来很好:

tmux list-windows -t main -F '#{session_name}:#{window_name}' | fzf | xargs echo tmux attach -t```

=> tmux attach -t main:mail

如果我tmux attach -t main:mail直接运行,它可以正常工作。

知道我做错了什么吗?

没有 fzf 的更简单的分解(会产生相同的错误)是:

echo "main:mail" | xargs tmux attach -t

答案1

tmux需要 stdin 作为终端,但使用管道将使 stdin 连接到管道输出。另一个可能的解决方案是

tmux attach -t "$(tmux list-windows -t main -F '#{session_name}:#{window_name}' | fzf)"

答案2

以下是一个解决方法,但我希望知道上述方法不起作用的原因并找到更好的解决方案:

run-shell tmux list-windows -t main -F "#{session_name}:#{window_name}" | fzf > /tmp/tmux-session && tmux attach -t $(cat /tmp/tmux-session)

相关内容