【问题标题】:tmux kill many windows at once [closed]tmux一次杀死许多窗口[关闭]
【发布时间】:2012-08-18 01:22:31
【问题描述】:

我在 tmux 会话中打开了大量窗口,我想杀死其中的 75%。有没有办法一次杀死多个窗口,而不是去每个窗口单独杀死它?

【问题讨论】:

    标签: unix tmux


    【解决方案1】:

    我认为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替代。
    • 我在我的 .tmux.conf 中使用:bind X command-prompt -p "Windows to kill:" 'run-shell "for w in $(tmux display-message -p \"%%\"); do tmux kill-window -t \$w; done;"'。将窗口数量添加为空格分隔值,例如,点击 X -> "Windows to kill: 3 5 8 15",以终止窗口 3 5 8 和 15。尽管不要打开 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' 是否正常?
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2015-08-09
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2015-12-20
    相关资源
    最近更新 更多