如何在双显示器设置中将终端镜像到第二个屏幕?


25

我使用两个监视器的设置进行授课,因此我在桌面上看到的内容与听众可以看到的有所不同。这对于演示非常有用:当学生看到幻灯片时,我可以看到我的笔记。

但是我想使用终端来运行shell。但是,终端必须在我的桌面上或在外部屏幕上。

有没有办法在两个屏幕上同时显示终端内容?我不想镜像屏幕,但坚持使用两个监视器模式。

有什么提示吗?

我在Gnome中使用Ubuntu。


好吧,如果您只想以任何方式显示终端(只要它可以工作),则可以镜像桌面并显示终端仿真器,这是一种方式。您是在专门谈论TTY吗?然后,针对screen和tmux的两个已经存在的答案就可以起作用。真正取决于您的需求
Sergiy Kolodyazhnyy

不是重复的,因为这个问题是专门针对终端的,这意味着还有其他选项(例如屏幕,tmux)可用,但是这个问题是非常紧密相关的,那里的答案也应该适用于这个问题。
psmears '18

@Sergiy Kolodyazhnyy:我不想镜像桌面,因为它弄乱了演示文稿。当我切换回单独的屏幕时,幻灯片不再适合屏幕。有时幻灯片会转到我的桌面。tmux对我来说很好。
Jander

Answers:


15

便携式解决方案

使用script!例如:

个人终端:

> script -f /tmp/lecture1.scrpt #use -F instead on MacOS
> ... #start doing things here!

演示终端:

> #after this, terminal will continuously print whatever's written to personal terminal
> tail -F /tmp/lecture1.scrpt

怎么运行的

script命令会将写入终端屏幕的所有内容(包括您键入的内容!)复制到作为参数的文件中。通常,在结束脚本后(通过键入exit),所有内容都会写入文件中。但是,该-f选项导致script每次写入后刷新其缓冲区(在MacOS上为-F-t 0)。然后,在演示终端中,您可以用来tail -F连续查看内容。


注意事项

  • 由于一个终端正在写入文件,而另一终端正在读取文件,因此可以在不同的用户之间完成!这意味着您可以让某人以很少的权限进入ssh,只要将脚本文件放置在他们可以读取的位置,您仍然可以向他们展示。(即:如果您有一个学生可以访问的服务器,则可以创建一个仅对他们可读的.scrpt文件,以便他们可以在自己的屏幕上跟踪该文件)

  • 鉴于此方法的性质,一个终端在驾驶而另一终端仅在观看。

  • 此方法还具有额外的好处,使您可以轻松地停止镜像,进行一些秘密工作并再次开始镜像,而无需离开您的个人终端。这可以通过以下操作完成:

个人终端:

> exit #end script session; stop writing to /tmp/lecture1.scrpt
> ... #do secret things not safe for student eyes!
> script -f -a /tmp/lecture1.scrpt #begin writing again with -a to append

更多乐趣script

的目的script是录制您的终端会话,以便以后可以播放(我们正好是在录制时进行回放的特殊情况)。为了解决这个问题,script可以-t选择记录时序以及写入屏幕的时间。要使用它,请使用以下命令启动脚本会话:

> script -f -t 2>/tmp/lecture1.timing /tmp/lecture1.scrpt

并使用以下命令播放(定时!):

> scriptreplay -t /tmp/lecture1.timing -s /tmp/lecture1.scrpt

有学生通过电子邮件向您发送电子邮件,说他会生病并且无法上课吗?还是只想给您的学生更多的讲座资料?如果您在演讲过程中录制语音(并在录制的同时启动脚本),那么您的学生可以用您的语音播放终端会议并获得完整的演讲经验!

有一个喜欢以2倍速度播放所有视频的学生吗?scriptreplay用一个“除数”乘以播放速度!只需-d 2以2倍的速度通过即可播放(请注意,这是一个双精度值,因此您甚至可以-d .5将速度提高一半!)。


哇有趣!令人惊讶的是,这似乎可以完美处理历史记录浏览,删除,颜色...。不会以为这是可能的tail。(我认为tmux在实践中仍然会更好,因为它在编辑会话等方面也没有问题。)
大约

真的很有趣!它可以处理窗口大小的变化,而tmuxscreen不能,据我可以告诉。
詹德'18

@leftaroundabout此处的魔力实际上只是tail实际上所做的很少。如果您查看带有类似脚本文件的脚本文件,vim或者less您会看到它添加了丑陋的转义符,因为它试图控制屏幕的滚动和字符放置。
scohe001 '18

@leftaroundabout通过“编辑会话”表示什么意思vim?据我所知,这似乎很好用(只要演示终端比个人终端大)
scohe001 '18

35

一种优雅的方法是tmux用于此任务:sudo apt install tmux。这是一个例子:

  • 创建一个会话my_session-d在创建过程中删除要附加的会话):

    tmux new-session -d -s my_session
    
  • 打开一个或多个新的终端窗口并附加到同一会话:

    tmux attach -t my_session
    
  • 要从会话中分离:

    tmux detach
    

    或按Ctrl+b,然后释放Ctrl并按d

  • 要将命令发送到会话而不附加它:

    tmux send-keys -t my_session“回声你好世界!” 输入  Enter
  • 请注意exit,从内部执行的命令将关闭会话。


27

想不到任何直接实现您想要的方法的方法-也许其他人可以做到。但我可以想到一种解决方法。

安装screen使用sudo apt install screen。启动两个终端。在第一个screen窗口中,在获得的导航屏幕上键入并按Enter。在第二个中,键入screen -x

它们将有效地显示相同的内容。它不是相同的终端窗口,但内容将相同。

屏幕还可以执行更多操作,例如可以在多个窗口之间切换。这是可用功能的快速教程


抱歉,我无法选择两个答案作为正确答案……
Jander

1
完全没问题:)我自己也赞成其他答案:)
vidarlo

4

除了上面使用pamu的pa4080来使用tmux之外,我还建议扩展版本:

试试吧。它也可以作为Ubuntu软件包使用。尽管它可以用作tmux的替代品,但它可以做的更多:我可以使用可通过ssh或http(只读或完全共享)访问的tmate公共服务器来复制您的终端会话。因此,您的学生可以在您的个人计算机/平板电脑等的浏览器中直接使用投影仪投影或终端会话的只读视图。


tmate看起来很有趣。这是一个简单的演示:youtube.com/watch?
v=is_VpIx3Z4M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.