Jan*_*der 25 command-line display multiple-monitors
我使用双显示器设置进行教学,因此我在桌面上看到的内容与观众看到的内容不同。这适用于演示文稿:当学生看到幻灯片时,我可以看到我的笔记。
但我想使用终端来运行 shell。但是,终端必须在我的桌面或外部屏幕上。
有没有办法同时在两个屏幕上显示终端内容?我不想镜像屏幕,而是坚持双显示器模式。
任何提示?
我在 Gnome 上使用 Ubuntu。
pa4*_*080 37
一种优雅的方法是tmux用于此任务:sudo apt install tmux. 下面是一个例子:
创建一个名为my_session(-d在创建过程中删除以附加)的会话:
tmux new-session -d -s my_session
Run Code Online (Sandbox Code Playgroud)打开一个或多个新的终端窗口并附加到同一会话:
tmux attach -t my_session
Run Code Online (Sandbox Code Playgroud)从会话类型分离:
tmux detach
Run Code Online (Sandbox Code Playgroud)
或按Ctrl+b,然后松开Ctrl并按d。
向会话发送命令而不附加到它:
tmux send-keys -t my_session "echo Hello World!" 进入 Enter
请注意exit,从内部执行的命令将关闭会话。
sco*_*001 15
使用script!例如:
个人终端:
> script -f /tmp/lecture1.scrpt #use -F instead on MacOS
> ... #start doing things here!
Run Code Online (Sandbox Code Playgroud)
演示终端:
> #after this, terminal will continuously print whatever's written to personal terminal
> tail -F /tmp/lecture1.scrpt
Run Code Online (Sandbox Code Playgroud)
该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
Run Code Online (Sandbox Code Playgroud)
script!的目的script是记录您的终端会话,以便稍后播放(我们恰好是在录制时播放的特例)。为了解决这个问题,script可以-t选择记录时间以及写入屏幕的内容。要使用它,请使用以下命令启动脚本会话:
> script -f -t 2>/tmp/lecture1.timing /tmp/lecture1.scrpt
Run Code Online (Sandbox Code Playgroud)
并用以下方式播放(有时间!):
> scriptreplay -t /tmp/lecture1.timing -s /tmp/lecture1.scrpt
Run Code Online (Sandbox Code Playgroud)
有一个学生给你发电子邮件说他生病了不能上课?或者只是想给你的学生更多的讲座材料?如果您在讲座期间录制您的声音(并在录制的同时启动脚本),那么您的学生可以用您的声音回放您的终端会话并获得完整的讲座体验!
有学生喜欢以 2 倍速播放他的所有视频吗?scriptreplay需要一个“除数”,它将播放速度乘以!只需-d 2以 2 倍速度传球即可(请注意,这是一个双倍值,因此您甚至可以-d .5以半速进行!)。