如何从 .t​​mux.conf 运行 shell 命令

Ema*_*erg 9 shell tmux

如何.tmux.conf在 tmux 启动时从或以其他方式自动运行 shell 命令,而不必点击任何其他命令?

我如何创建别名、函数或脚本,例如

tmuxirc -> tmux + irssi

Sev*_*zak 18

虽然它似乎不是您想要的,但解决方案是:

如何从 .t​​mux.conf 运行 shell 命令

run-shell,或者,以其缩写形式,run。从tmux手册页:

run-shell shell-command
               (alias: run)
         Execute shell-command in the background without creating a win-
         dow.  After it finishes, any output to stdout is displayed in
         copy mode.  If the command doesn't return success, the exit sta-
         tus is also displayed.
Run Code Online (Sandbox Code Playgroud)

如果您需要在启动时在后台静默启动脚本,则tmux可以使用run "command > /dev/null".


Chr*_*own 9

听起来您想从 shell 外部调用 tmux 而不是从 tmux 内部执行此操作,所以.tmux.conf是错误的地方。您可以使用 shell 别名(将其放在您的目录中.bashrc以供重用):

alias tmuxirc='tmux new-session -s irc irssi'
Run Code Online (Sandbox Code Playgroud)


小智 6

我用脚本做类似的事情。当我想用我的开发配置启动 tmux 时,我称之为。脚本本身如下所示:

#!/bin/sh
tmux has-session -t development
if [ $? != 0 ]; then
    tmux new-session -s development -n editor -d
    tmux send-keys -t development 'cd /var/www/htdocs/' C-m
    tmux send-keys -t development 'vim' C-m
    tmux split-window -v -t development
    tmux split-window -v -t development
    tmux select-layout -t development main-horizontal
    tmux send-keys -t development:0.1 'cd /var/www/htdocs/' C-m
    tmux new-window -n console -t development
    tmux send-keys -t development:1 'cd /var/www/htdocs/' C-m
    tmux select-window -t development:0
fi
tmux attach -t development
Run Code Online (Sandbox Code Playgroud)

这给我的是一个带有 2 个窗口的 tmux 会话,窗口 1 在屏幕顶部有一个 Vim 会话,在屏幕底部的第三个左右有两个终端,都指向我的 /var/www/htdocs/ 目录. Window 2 只是一个全屏控制台。这样做的好处是它不会重新创建会话,如果它已经存在,它只会附加到它。