Відповіді:
Використання:
tmux split-window "shell command"
split-window
Команда має наступний синтаксис:
split-window [-dhvP] [-c start-directory] [-l size | -p percentage] [-t target-pane] [shell-command] [-F format]
(з man tmux
розділу "Windows і панелі"). Зауважте, що порядок є важливим - команда повинна виконуватись після будь-якого з попередніх параметрів, які з'являються, і це повинен бути єдиний аргумент, тому вам потрібно цитувати його, якщо в ньому є пробіли.
Для таких команд, ping -c
що швидко закінчуються, ви можете remain-on-exit
спочатку встановити параметр:
tmux set-option remain-on-exit on
tmux split-window 'ping -c 3 127.0.0.1'
Панель залишатиметься відкритою після ping
завершення, але буде позначена "мертвою", поки не закриєте її вручну.
Якщо ви не хочете змінювати загальні параметри, є інший підхід. Команда виконується за допомогою sh -c
, і ви можете скористатися нею, щоб вікно залишилося живим в кінці:
tmux split-window 'ping -c 3 127.0.0.1 ; read'
Тут ви використовуєте команду shell read
для очікування нового введення користувачем нового рядка після завершення головної команди. У цьому випадку командний вихід залишатиметься, поки ви не натиснете Enterна панель, а потім автоматично закриється.
remain-on-exit
або використовувати cmd ; read
.
bash --rcfile
Ця техніка відкриває нову оболонку, виконує команди та залишає вас там після закінчення команд:
tmux-split-cmd() ( tmux split-window -dh -t $TMUX_PANE "bash --rcfile <(echo '. ~/.bashrc;$*')" )
tmux-split-cmd 'cd; pwd; ping google.com'
Або якщо в команді немає спеціальних символів терміналу, таких як ;
просто:
tmux-split-cmd ping google.com
Для цього використовується:
--rcfile
: Як викликати bash, запускати команди всередині нової оболонки та повертати користувачеві керування? | Переповнення стекаTMUX_PANE
: Як розділити вікно, яке виконувало команду "tmux split-window" замість поточного?Ще один цікавий варіант:
tmux-split-cmd-uniq() (
if [ "$(tmux list-panes | wc -l | cut -d' ' -f1)" -ne 1 ]; then
tmux kill-pane -t 1
fi
tms "$@"
)
який вбиває попередній розкол, якщо він уже існує, і допомагає зберігати лише один додатковий розкол у всі часи.
man tmux | less -p remain-on-exit
...