Gunakan tmux attach dengan xargs


1

Saya ingin membuat alias yang memungkinkan saya menelusuri semua jendela tmux saya dengan FZF dan kemudian melampirkan jendela itu. Apa yang saya miliki sejauh ini:

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

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

Ini menghasilkan kesalahan:

open terminal failed: not a terminal

Saat saya menambahkan echo, perintah yang dihasilkan terlihat baik-baik saja:

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

=> tmux attach -t main:mail

Jika saya lari tmux attach -t main:mail secara langsung, ini berfungsi dengan baik.

Ada yang tahu apa yang saya lakukan salah?

Rincian sederhana tanpa fzf (yang menghasilkan kesalahan yang sama) adalah:

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

Jawaban:


1

tmux membutuhkan stdin untuk menjadi terminal, tetapi menggunakan pipa akan membuat stdin terhubung ke keluaran pipa. Solusi lain yang mungkin untuk Anda adalah

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

0

Berikut ini adalah solusinya, tetapi saya akan menghargai mengetahui mengapa hal di atas tidak berhasil dan memiliki solutino yang lebih baik:

run-shell tmux list-windows -t main -F "#{session_name}:#{window_name}" | fzf > /tmp/tmux-session && tmux attach -t $(cat /tmp/tmux-session)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.