1

Я хотел бы создать псевдоним, который позволит мне просматривать все мои окна tmux с помощью FZF, а затем прикреплять это единственное окно. Что у меня так далеко:

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

2 ответа2

1

tmux нужен stdin, чтобы быть терминалом, но использование канала заставит stdin подключиться к выходу канала. Другое возможное решение для вас

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

Ниже приведен обходной путь, но я хотел бы знать, почему вышеописанное не сработало, и иметь лучшее solutino:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .