【发布时间】:2012-08-18 01:22:31
【问题描述】:
我在 tmux 会话中打开了大量窗口,我想杀死其中的 75%。有没有办法一次杀死多个窗口,而不是去每个窗口单独杀死它?
【问题讨论】:
我在 tmux 会话中打开了大量窗口,我想杀死其中的 75%。有没有办法一次杀死多个窗口,而不是去每个窗口单独杀死它?
【问题讨论】:
我认为tmux 内部不支持此功能,但您可以编写脚本。
首先创建一个测试会话:
tmux new -s test
repeat 9; do tmux new-window -t test; done # in zsh
for i in {1..9}; do tmux new-window -t test; done # in bash
现在是窗口杀戮:
# number of windows in test session
nwin=$(tmux list-windows -t test | wc -l)
# number of windows to kill
nkill=$(echo "$nwin * .75" | bc -l | cut -d. -f1)
tmux list-windows -t test | cut -d: -f1 | head -n$nkill \
| while read; do
tmux kill-window -t test:$REPLY
done
这是一种相当灵活的方法,你应该能够grep -v 任何你想保留的窗口,或者相反地grep 你想杀死的那些。
【讨论】:
for win in window1 window7 window9; do tmux kill-window -t $win; done。我希望bash 有一个repeat 结构,如zsh。
bash不支持repeat,将添加bash替代。
bind X command-prompt -p "Windows to kill:" 'run-shell "for w in $(tmux display-message -p \"%%\"); do tmux kill-window -t \$w; done;"'。将窗口数量添加为空格分隔值,例如,点击 renumber-windows ;) bind C-x command-prompt -p 'Windows to kill:' 'run-shell "for w in \$(echo %% | sort -n -r); do tmux kill-window -t \$w; done;"'。同样,提供窗口编号 (#I),以空格分隔。
head: option requires an argument -- 'n' 是否正常?