我正在尝试使用具有固定屏幕尺寸的旧应用程序,并且确实无法适应不同的屏幕尺寸。看起来 screen 命令应该能够做到这一点,但我不知道如何做到。请注意,由于内核模式切换、VGA 字体和现代 LCD 尺寸之间的愚蠢交互,系统控制台并没有真正调整大小。 80 x 25 在我的硬件上是禁止的尺寸。
然而,一些文档说,-w [lines [cols]]
当我尝试screen -w 80 25 ./runme
screen 时,只是抱怨这-w
不是一个命令。我认为该文档写得不好,它实际上描述了一个 termcap 条目。
我真的希望能够使用 shell 脚本自动启动,但运行一个以另一个 shell 脚本作为目标启动屏幕的 shell 脚本没有问题。
答案1
您似乎想使用该screen
命令在固定屏幕尺寸内运行旧应用程序,但您在如何实现这一点方面遇到了一些困惑。您是对的,该-w
选项不是用于设置屏幕尺寸,而是用于设置终端硬状态线的宽度。
不幸的是,screen
它本身没有提供内置的方法来为应用程序设置固定的屏幕尺寸。终端大小通常由终端仿真器和终端仿真器的设置决定,而不是由screen
.
要解决此问题,您可以在会话stty
中运行应用程序之前尝试使用命令设置终端大小screen
。以下是如何创建 shell 脚本来自动执行此过程的示例:
#!/bin/bash
# Set the terminal size to 80x25
stty rows 25 cols 80
# Start your application inside a screen session
screen -dmS myapp ./runme
# Attach to the screen session to interact with your application
screen -r myapp
在此脚本中:
在启动会话之前,我们使用
stty
命令将终端大小设置为 80x25screen
。我们
screen
以分离模式 (-dmS
) 启动会话,指定名称 (myapp
) 并指定要运行的命令 (./runme
)。最后,我们附加到
screen
会话以使用 与您的应用程序交互screen -r myapp
。
此脚本应帮助您确保旧应用程序在指定的终端大小内运行。请记住调整脚本和终端大小以满足您的特定要求。
请注意,某些应用程序在非标准终端尺寸中可能无法按预期运行,并且此方法可能无法完美地适用于所有应用程序。如果您的应用程序严重依赖于特定的终端大小设置,您可能需要寻找替代解决方案或考虑在更合适的环境中运行它,例如具有兼容终端大小的虚拟机或容器。