命令行的伪演示软件

命令行的伪演示软件

我正在寻找一些可用于演示的软件。

我经常需要在向班级展示脚本等的效果时讲述它们的效果,而且我经常会遇到手指问题而不得不重写各种命令——浪费课堂时间和精力。

我希望能够提前记录一系列命令,然后按照我选择的速度播放它们。

所以我可能有一个包含以下命令的文件:

echo "hello world!" 
ls ls -l  
ls -l | sort

我希望能够通过输入来播放这些命令相似的个中。

因此,我会有一个闪烁的命令提示符,如果我输入“echo“hxxx”,命令提示符将显示

主页$echo "地狱

如果我输入任何其他字母,终端就会填满命令的剩余部分,直到我按下回车键,然后执行命令。关键是,即使我在输入命令时搞砸了,我事先准备好的命令也会被执行。

我的问题是 - 是否存在用于演示的类似软件?或者,这是一个容易编写脚本的东西吗......?

编辑 - 首先,我使用的是 osx - 但对于从 google 来到这里的人来说,获得一个通用的解决方案会很好。其次,许多评论/答案实际上都集中在如何通过热键等快速轻松地输入长命令。实际上,我希望它至少看起来像我在实时输入 - 这就是我加入关于一对一键映射的部分的原因,但我认为我没有尽可能好地解释这一点...

答案1

您可以使用 Perl 和 IO::Prompter 模块。以下脚本应该会有所帮助

#!/usr/bin/perl -w

use IO::Prompter<<EOF;
echo "Hello world!"
ls ls -l
ls -l | sort
EOF

use strict;
use feature 'say';
use IPC::Open2;
use Time::HiRes 'sleep';

open2('>&STDOUT',\*SHELL,'bash');

while(my $cmd=prompt '$'){
        say SHELL $cmd;
        sleep 0.05;
}

此脚本会为您提供一个提示符(可配置,只需编辑 的参数prompt),并且每次击键都会插入来自上述命令块的一个字符。Backspace 也可以使用,您也可以按 Enter,IO::Prompter 会自动完成该行并以合理的书写速度将其发送到 bash。运行命令块中的命令后,脚本将继续接受任何输入并将其发送到 bash。

您应该已经安装了 Perl。要安装 IO::Prompter,请cpan IO::Prompter从您最喜欢的终端仿真器运行。

答案2

宏记录器或者铁矿石

  • 借助 IronAHK(AutoHotkey 的 Linux/Mac 端口),您可以将按键或字符串分配给按键,以便快速轻松地输入整个数据块和命令。例如,您可以将以下命令分配为原始字符串,或分配为对系统命令的调用。

    echo "hello world!" 
    ls ls -l  
    ls -l | sort
    

    然后您可以将其绑定到某个键,例如A、 或+ 1、 或++或任何您喜欢的ShiftF1。然后您可以在运行时按顺序按下热键(使用数字热键可以更方便)。

    通过将命令组织成组,您可以根据需要进行细粒度的设置,以便在任何时候您可以中断操作,或者需要暂停演示来执行其他操作,例如显示文件等。

  • 使用宏程序,您可以记录您的击键,然后播放它们,通常还可以调整速度控制。

答案3

我写shellscript-runner.zsh做你想做的事。下载它,运行 zsh,然后在 zsh 中,获取文件。现在 shellscript-runner 已准备就绪,可以让你运行内置演示。阅读文件末尾的演示文本,然后尝试一下。我希望你会发现它非常强大且易于使用。

您希望能够控制每个角色出现的时间,但目前尚未实现,但可以添加。

Zsh(如果您从未尝试过)具有许多 bash 所没有的功能。Zsh 强大的行编辑功能,使得 shellscript-runner 成为可能。在 bash 中,这是不可能的。

相关内容