我想要一个包含两个名为 mutt 和 Offlineimap 的窗口的新会话。应该使用两个不同的offlineimap实例(具有不同的配置文件)将offlineimap窗口分成两个。
tmux new-session -d -s mail -n mutt mutt
tmux new-window -d -t mail -n offlineimap "offlineimap -c ~/.dotfiles/mutt/dev.offimap"
tmux split-window -d -v -t mail "offlineimap -c ~/.dotfiles/mutt/trash.offimap"
只创建一个 mutt 窗口,但没有 Offlineimap 窗口。 =>该代码有什么问题?
编辑:
当我更改 的内容时,""
它就sleep 1000
起作用了。
编辑2:
我发现第二个 tmux 窗口在创建后立即退出,因为它“使用与第一个离线映射相同的元数据”
答案1
你写了:
tmux new-session -d -s mail -n mutt mutt
tmux new-window -d -t mail -n offlineimap "offlineimap -c ~/.dotfiles/mutt/dev.offimap"
tmux split-window -d -v -t mail "offlineimap -c ~/.dotfiles/mutt/trash.offimap"
试试这个,将其写入 atmux_mail.sh
或任何您想命名的内容:
#!/bin/bash
tmux \
-v \
new-session \
-d \
-s mail \
-n mutt \
mutt \
\; \
new-window \
-d \
-n offlineimap \
"offlineimap -c ~/.dotfiles/mutt/dev.offimap" \
\; \
split-window \
-d \
"offlineimap -c ~/.dotfiles/mutt/trash.offimap" \
\; \
attach
保存并使其可执行后,在命令提示符下运行它以享受新的 tmux 邮件会话:
$ ./tmux_mail.sh
解释
\;
使每个new-window
或split-window
参数成为单个连续tmux
命令的一部分- 所以我们省略,因为当所有这些都被指定为单个命令的一部分时,
-t
您不需要指定目标会话-t
tmux
- 除了最后一行之外的每一行都使用 bash 行延续
\
(反斜杠后跟空格,后跟行回车)来继续我们希望 bash 运行的命令行,同时允许我们完整地编写命令,但每个命令几乎有一个选项行,为了更容易阅读和清晰,这可以帮助您长期维护此脚本 -v
对于详细日志记录,需要在开头指定,按照语法概要man tmux
- 是
-d
要分离,所以它不会立即执行连接到当前终端的默认行为,直到我们有机会完全指定我们想要的选项 - 因此,最终当完成我们希望 tmux 执行的所有选项后,我们必须
attach
在终端上实际看到最终结果 - 请注意,如果一个程序是非交互式的,只是运行并退出,例如
echo
,那么在 tmux 中也会发生类似的情况,它只会运行该程序,然后在程序退出时关闭窗口
因此,只要您的mutt
和offlineimap
命令实际工作并且不会立即正常退出,并且在 tmux 之外工作正常,那么使用这些命令,它们应该在 tmux 中工作,创建您想要的 tmux 会话。