所以我相信已经有两个问题了。所有这些都与相关tail -f
,因此人们给出了“少用”的切线答案。
我需要它来执行所有操作、每个命令等。问题是我需要运行大量控制台窗口,即使有多个监视器,仍然需要缩小它们。因此,几乎每个输出都被换行所破坏,并且难以阅读。
一种建议的解决方案是echo -ne '\e[?7l'
,它在某种程度上有效。现在的问题是,有什么办法让控制台上有滚动条吗?
Ubuntu 12.10,终端
答案1
您要求的是一个无限宽度的终端,其中的一部分正在显示。这不是终端传统的工作方式,也不是应用程序期望它们的工作方式。
例如,如果终端具有无限宽度,那么当视觉应用程序想要在屏幕中间显示某些内容时,它们如何工作?
不过,您可以做的事情是使用 GNU screen
(您应该能够从多个不同大小的终端附加屏幕会话,以便屏幕知道如何显示较大终端的小窗口)并将screen
窗口宽度设置为某个值非常大,然后欺骗视觉应用程序认为屏幕宽度是原始宽度。
喜欢(内screen
)
c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"
有些视觉应用程序可以正常工作,有些则不太好(当它们进行相对定位或依赖终端包装时安装)。vim
似乎工作正常。
然后要滚动并复制粘贴数据,唯一的选择是使用screen
's复制模式。 ( <prefix>]
) 并在光标周围移动(请参阅info -f screen -n Movement
在复制模式)。
tmux
可能具有类似的能力。
这terminator
终端仿真器(基于java),这不是terminator
Ubuntu 自带的也可以用无限的终端宽度来做到这一点:
- 线条永远不会换行
- 视觉应用程序被告知屏幕宽度是适合窗口的宽度,而不是无穷大。
- 它也比上面的基于解决方案工作得更好,
screen
因为它的 terminfo 条目声称它不进行换行,因此应用程序知道这一点,并且行开头的 BS 不会移动到上一行的末尾。
答案2
虽然 Emacs 主要是一个编辑器和 IDE,但它恰好非常适合您的问题。您可以在 Emacs 窗口内运行程序,Emacs 将其显示在无限宽度和高度的哑终端中。如果光标位于缓冲区末尾,则窗口将在程序产生输出时滚动;如果您移动光标,窗口将随着输出的增长而保持不变。
键入M-x shell RET
(即Alt+ x shell
Return)以在 Emacs 缓冲区中启动 shell。键入C-u M-x shell RET
或M-1 M-x shell RET
启动另一个 shell。您可以在每个 shell 中运行一个程序,并根据需要在多个窗口中排列缓冲区。
¹有时有人说它是比编辑器更好的操作系统,但只有那些不使用它的人才会说——这只是一个笑话。