有没有办法让屏幕在启动时将终端分成 3 个部分,每个部分运行不同的命令?

有没有办法让屏幕在启动时将终端分成 3 个部分,每个部分运行不同的命令?

我总是启动 3 个终端,其中一个终端中有一个开发服务器,第二个终端中有一个 python shell,cd第三个终端中有一个,以准备进行 bash 输入。

我希望在我的 .bashrc 中有一个快捷方式,使用一个命令进行设置:运行screen,将其分成 3 列,并在屏幕的每个部分启动不同的命令。

我怎样才能做到这一点 ?

编辑:我已经知道我可以创建一个别名来screen -c从特定的配置文件中读取,我只是不确定要在其中放入什么。

答案1

您可以在 screenrc 中使用布局

# ------------------------------------------------------------------------------
# STARTUP SCREENS
# ------------------------------------------------------------------------------

layout new
split -v
split -v
screen htop
focus next
screen -t python python
focus next 
chdir /srv
screen -t dir

答案2

split命令就是您要找的。无需任何参数,它将屏幕水平分成两部分。

除了“水平”在这种情况下可能会造成混淆,因此更具体地说:它将屏幕分成两个窗格,使得两个窗格之间的分隔符是一条水平线,这意味着两个窗格垂直排列。

要以另一种方式(“垂直”)分割屏幕,请将其传递-v给它。要获得三个部分,您只需分割两次即可。

一旦你有多个窗格,你可以使用focus它来更改当前窗格,以便执行后续命令。该命令focus next向前移动(如 control-A tab),而focus prev向后移动(如 control-A shift-tab)。

因此,在新屏幕中,您有一个窗格,并且它具有焦点。但是,如果您使用自定义配置文件,它只会在空白窗口上打开-,因此您需要从screen命令开始获取实际的 shell:

screen

然后你可以分割它:

split -v

现在您有两个窗格,但第二个窗格未获得焦点并显示空白窗口-。您可以通过移动到它并启动 Python shell 来解决这个问题:

focus next
screen python

现在再次分割以获得第三个窗格。

split -v

请注意,即使您在逻辑上分割了两个窗格中的一个,您最终也会得到三个大小相等的窗格(或尽可能接近您的终端大小),而不是一个半屏幕和两个四分之一屏幕窗格。

移至新的:

focus next

现在你想在特定目录中获取 shell。一种方法是在启动 shell 之前使用chdir命令更改 的目录:screen

chdir /wherever
screen

但这种技术对我来说不起作用;每次我 cd 时,我的 shell 都会将我的工作目录保存在一个文件中,而我的 .zshrc 最后所做的就是 cd 到该文件中的目录。因此,启动 shell 时父进程所在的目录不会影响我在 shell 中的最终位置,我必须使用另一种机制。另一种选择是启动 shell,然后cd向它发送命令:

screen
stuff "cd /wherever\n"

使用适合您的任何一种。当然,您可以添加-t title命令screen

screen
split -v
focus next
screen -t python python
split -v
focus next
screen -t /somewhere
stuff "cd /somewhere\n"

答案3

您正在寻找这样的东西吗?

$ cat s
screen -dm -S moo -t hello
screen  -S moo -X screen -t cruel
screen  -S moo -X screen -t world
screen  -S moo -p 0 -X stuff $'vim\r'
sleep 2
screen  -S moo -p 1 -X stuff $'watch dmesg\r'
sleep 2
screen  -S moo -p 2 -X stuff $'top\r'

答案4

终结者对你有用吗?

来自他们的网站:

The goal of this project is to produce a useful tool for arranging terminals.
It is inspired by programs such as gnome-multi-term, quadkonsole, etc. in
that the main focus is arranging terminals in grids (tabs is the most common
default method, which Terminator also supports).

相关内容