Sử dụng tmux đính kèm với xargs


1

Tôi muốn tạo một bí danh cho phép tôi duyệt tất cả các cửa sổ tmux của mình bằng FZF và sau đó đính kèm cửa sổ đó. Những gì tôi có cho đến nay:

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

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

Điều này dẫn đến một lỗi:

open terminal failed: not a terminal

Khi tôi thêm một echo, lệnh xuất ra có vẻ tốt mặc dù:

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

=> tmux attach -t main:mail

Nếu tôi chạy tmux attach -t main:mail trực tiếp, nó hoạt động tốt.

Bất cứ ý tưởng những gì tôi đang làm sai?

Một sự cố đơn giản hơn mà không có fzf (tạo ra cùng một lỗi) sẽ là:

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

Câu trả lời:


1

tmux cần stdin là thiết bị đầu cuối, nhưng sử dụng một đường ống sẽ làm cho stdin kết nối với đầu ra đường ống thay thế. Một giải pháp khả thi khác cho bạn là

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

0

Sau đây là một cách giải quyết, nhưng tôi đánh giá cao việc biết tại sao những điều trên không hoạt động và để có một solutino tốt hơn:

run-shell tmux list-windows -t main -F "#{session_name}:#{window_name}" | fzf > /tmp/tmux-session && tmux attach -t $(cat /tmp/tmux-session)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.