使用tmux附加xargs


1

我想创建一个别名,让我用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

Answers:


1

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

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

0

以下是一种解决方法,但我很高兴知道为什么以上不起作用并且有更好的解决方案:

run-shell tmux list-windows -t main -F "#{session_name}:#{window_name}" | fzf > /tmp/tmux-session && tmux attach -t $(cat /tmp/tmux-session)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.