Ben*_*son 11 bash scripts terminator
我编写了一个 Bash 脚本,它运行四个长时间运行(每个 20-30 分钟)的进程:
terminator -T "<NAME-1>" -e "<COMMAND-1>" &
terminator -T "<NAME-2>" -e "<COMMAND-2>" &
terminator -T "<NAME-3>" -e "<COMMAND-3>" &
terminator -T "<NAME-4>" -e "<COMMAND-4>" &
Run Code Online (Sandbox Code Playgroud)
(其中<COMMAND-X>是由几行 Bash 预先创建的值,包括对 Kubernetes 的调用)。
当我运行我的脚本时,每个进程都会在一个新的 Terminator 窗口中打开。为了避免每次运行脚本时产生四个新窗口,我实际上希望它们都以单个新窗口的不同视图开始。有没有办法做到这一点?手册上什么都没有。
我会接受使用不同终端的解决方案。
ter*_*don 10
首先,打开一个终结器实例,根据需要将其拆分为 4 个窗格并另存为新布局(确保关闭所有打开的终端窗口,除了您使用新配置文件设置的窗口)。对于每个4个窗格中,添加自定义命令,但只需添加文本COMMAND1,COMMAND2等保存新布局foo(或其他)。此时,您~/.config/terminator/config应该看起来像这样:
[global_config]
enabled_plugins = LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler
focus = mouse
suppress_multiple_term_dialog = True
title_use_system_font = False
[keybindings]
[layouts]
[[default]]
[[[child0]]]
fullscreen = False
last_active_term = ad14f6cd-bcc3-4a80-9852-3fe64f7fc2eb
last_active_window = True
maximised = False
order = 0
parent = ""
size = 735, 474
title = sometitle
type = Window
[[foo]]
[[[child0]]]
fullscreen = False
last_active_term = 18ebf009-c427-4c2f-8017-78c379a72d31
last_active_window = True
maximised = False
order = 0
parent = ""
position = 2730:254
size = 735, 474
title = NAME-1
type = Window
[[[child1]]]
order = 0
parent = child0
position = 237
ratio = 0.5
type = VPaned
[[[child2]]]
order = 0
parent = child1
position = 368
ratio = 0.500680272109
type = HPaned
[[[child5]]]
order = 1
parent = child1
position = 368
ratio = 0.500680272109
type = HPaned
[[[terminal3]]]
command = COMMAND1
order = 0
parent = child2
profile = default
title = NAME-1
type = Terminal
uuid = 01e46a5a-0a12-4861-a81e-e376af6041a7
[[[terminal4]]]
command = COMMAND2
order = 1
parent = child2
profile = default
type = Terminal
uuid = 094d544d-944c-48a7-9960-00370253e799
[[[terminal6]]]
command = COMMAND3
order = 0
parent = child5
profile = default
type = Terminal
uuid = fe19f601-1963-4af7-8870-f90e289d3d27
[[[terminal7]]]
command = COMMAND4
order = 1
parent = child5
profile = default
type = Terminal
uuid = 18ebf009-c427-4c2f-8017-78c379a72d31
[plugins]
[profiles]
[[default]]
cursor_color = "#aaaaaa"
font = Monaco 11
scrollback_infinite = True
scrollback_lines = 5000
use_system_font = False
Run Code Online (Sandbox Code Playgroud)
现在,修改您的 bash 脚本以替换COMMANDN为您需要运行的实际命令:
#!/bin/bash
## change these to whatever you actually need
command1="echo one; bash"
command2="echo two; bash"
command3="tail -f /var/log/messages; bash"
command4="top"
## Modify terminator's config
sed -i.bak "s#COMMAND1#$command1#; s#COMMAND2#$command2#; s#COMMAND3#$command3#; s#COMMAND4#$command4#;" ~/.config/terminator/config
## Launch a terminator instance using the new layout
terminator -l foo
## Return the original config file
mv ~/.config/terminator/config.bak ~/.config/terminator/config
Run Code Online (Sandbox Code Playgroud)
运行该脚本现在将打开一个带有 4 个窗格的新终端窗口,每个窗格运行您的一个命令。
重要:如果命令是运行然后退出的东西(而不是像top运行直到你告诉它停止的东西),你需要COMMAN; bash作为命令来启动一个新的shell。否则,命令将运行,shell 将立即退出。这就是为什么我; bash在除了topy 脚本之外的每个命令之后都有。
由于您已经提到您会接受替代解决方案,请考虑使用gnome-terminal. 过去我为此编写了脚本,它允许生成带有多个选项卡的窗口并运行它们自己的命令。例如,请参见:https : //askubuntu.com/a/863179/295286
至于终结者本身,它似乎允许通过--new-tab选项为已经存在的窗口生成新选项卡,但我看不到通过--layout选项以外的单个命令生成多选项卡窗口的选项。当然,您可以自动化它,因为布局都在~/.config/terminator/config文件中,因此您可以写出自定义配置文件。如果我不会忘记,我会尝试写一个,但我认为gnome-terminal方法要简单得多,而且正是您想要的。
终结者有一个layout首选项,您可以将其与特定数量的选项卡、拆分一起使用,并为其分配特定的颜色配置文件。您要做的是打开 window ,添加所需的选项卡数量,然后右键单击,转到 Preferences , layouts 选项卡,然后单击添加按钮
完成编辑布局后,保存它。现在,您可以调用 useterminator -l <Layout Name>来生成具有该确切选项卡集的窗口。例如,从我的截图中你可以看到我有custom布局,所以我会使用terminator -l custom