4

Я хочу выполнить внешнюю команду на основе значения моего имени сеанса. Я знаю, что :display-message '#S' даст мне имя сеанса, но я хочу, чтобы это имя автоматически отправлялось моей внешней команде.

Я пробовал :run-shell "my-command #S" , но она не работает, так как "#S" не подставляется.

Есть ли что-нибудь вроде :MY_VAR=$(display-message -p "#S") которое я мог бы использовать?

3 ответа3

1

Если вы используете tmux 1.8 (вы можете проверить с помощью tmux -V), вы можете просто использовать :run-shell "my-command '#S'" . Это не работает в 1.6, хотя.

1

Так как вы можете работать почти все tmux команды непосредственно из командной строки ( а не только из : оперативный), вы можете сделать это:

:run-shell "my-command \"$(tmux display -p '#S')\""

Конечно, это также можно сделать из привязки:

:bind C run-shell "my-command \"$(tmux display -p '#S')\""
0

Вы можете использовать sed + xargs, чтобы передать результат в качестве параметра желаемой команде, например:

tmux bind-key "C" run-shell "tmux display-message -p '#{S}' | sed 's/.*/\"&\"/' | xargs my_command"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .