Я хочу создавать панели tmux программно. Например, у меня есть список команд для выполнения, и я создам сценарий оболочки, который будет запускать команду tmux вместе с командами, которые будут выполняться в каждой панели, динамически. Можете ли вы привести пример?
2 ответа
tmuxify (lib, которую я написал) делает это. Вы можете взглянуть на код, в котором здесь используется команда tmux send-keys
чтобы понять, как начать работу.
Имейте в виду, что вам нужно создать разделение, в котором вы хотите сначала выполнить команду. Используйте tmux split-window
для этого.
Я также рекомендую прочитать разделы man
для обеих команд выше. Это очень хорошо объяснено. Если у вас есть какие-либо сомнения, прокомментируйте ниже.
Tmuxinator также делает это хорошо. Это рубиновый гем, который использует yml-файл, который хранит ваши макеты и может программно их настроить.
На странице github есть приличный файл readme, но в основном это так:
Настроить:
mux new [project]
vim the/autogenerated/project.yml # Edit the config to suit
Откройте ваш проект:
mux [project]
Пример конфигурации:
windows:
- editor:
layout: tiled
panes:
- cd ~/code/source/dir && git status
- cd ~/code/source/dir && vagrant up && vagrant ssh -- -t 'sudo su; /bin/bash' # log in as sudo, the final /bin/bash keeps the shell open
- cd ~/code/source/dir && vagrant up && vagrant ssh -- -t 'sudo su some_user && cd ~/mounted/dir/ && vim ./; /bin/bash' # log in, go to your mounted code and vim
- # do nothing
- logs: tail -f log/development.log
В качестве примечания: он также может запускать команды при открытии панелей, так что вы можете использовать ssh на некоторых машинах, входить в систему от имени различных пользователей и т.д. И т.д.
Tmuxify также может охватывать ту же почву, поэтому хорошо, что у вас есть варианты. Плохая вещь ... вы должны выбрать;)