假设我只有一个控制台,可以模拟多个控制台/会话吗?
我正在寻找一个 Linux 命令/方法,而不是 ubuntu/debian 特定的。
#console1
$ ..
#console2
$ console_switch 2
$ ..
#console1 again
$ console_switch 1
$ ..
甚至喜欢这可用吗,即使作为一个包裹?
找到包“screen”,但是切换之间输出没有保持。
答案1
tmux
和终端多路复用screen
器在这方面很受欢迎。通过垂直/水平分割,可以同时看到多个窗口;例如,Ctrl-B "
在 tmux 中。甚至可以在窗口之间复制和粘贴文本。
Emacs 编辑器允许在其多个缓冲区中运行交互式 shell — 同样,屏幕上有多个缓冲区,并且可以在它们之间进行复制/粘贴。Vim 也是如此(使用“ :terminal
”命令),Neovim 中也有一个类似但不完全相同的功能。(在我 5 年前的测试中,Neovim 的 :terminal 运行良好,而 Emacs 的终端仿真似乎相当欠缺。)
tmux/screen 的一个更简单的替代方案是dtach
,它不执行完整的终端仿真,而只允许分离/重新连接,因此之前的输出会保留。(但是,这也意味着全屏程序内的分离功能无法正常工作。)
传家宝工具箱似乎提供的一个版本shl
,即“shell 层”,它存在于 Unix SVR3 中(不久后就消失了,但仍在 中存在stty swtch
)。但是,我根本无法构建工具箱,而且我不确定现代 Linux 内核是否有必要支持shl
。但是,如果它有效,它几乎和您的示例中的一样。
最后,你可以让多个 shell 进程作为作业运行:
$ bash
$ suspend
$ bash
$ suspend
$ jobs
[1]- Stopped bash
[2]+ Stopped bash
答案2
在 GNU Screen 中您可以:
- Ctrl使用+ A、Shift+拆分窗口S,
- Ctrl使用+ A, Tab,切换到新的拆分
- Ctrl使用+ A, C,打开新屏幕
- 重复。
此外,要关闭当前分割,请按Ctrl+ A, Shift+ X。