Без -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 ...