Без -d
new-session
будет автоматически присоединяться к новому сеансу (вы, вероятно, не хотите вложенные сеансы *, таким образом, предупреждение). Что вы, вероятно, хотите сделать, это создать новый «отдельный» сеанс, а затем переключить текущий клиент на этот новый сеанс. Я не думаю, что new-session
имеет опцию для обработки этого варианта использования, но это довольно легко сделать с помощью небольшого количества сценариев оболочки:
tmux-new() {
if [[ -n $TMUX ]]; then
tmux switch-client -t "$(TMUX= tmux -S "${TMUX%,*,*}" new-session -dP "$@")"
else
tmux new-session "$@"
fi
}
# example usage:
tmux-new -s new
Если TMUX отсутствует, просто запустите tmux new …
Иначе,
- снимите TMUX, чтобы избежать ошибки † при использовании
-S
для указания на текущий сервер,
- добавить
-d
для создания отдельного сеанса и
- добавьте
-P
чтобы вывести имя нового сеанса (для этого требуется tmux 1.8 или новее).
Вывод (имя нового сеанса) затем передается switch-client
.
Если у вас нет tmux 1.8, вам, возможно, придется немного переработать его (например, заставить функцию принимать обязательный аргумент, который называет новый сеанс, чтобы вы могли передать его как new-session
и switch-client
).
* У вас будет две строки состояния; сложно вводить команды tmux для внутреннего сеанса; и это может сделать странные вещи, если вы переключите внутренний клиент для просмотра внешнего сеанса (подумайте: зеркальный зал).
† Может быть, предупреждение должно быть подавлено при использовании -d
...